常微分方程数值解---实验报告.doc
文本预览下载声明
琼州学院
实 验 报 告
课程名称:__________ ___开课学期:____ ______
院(部):__理工学院_________开课实验室:________ __
学生姓名:__梁小叶_______ __专业班级:________ __
学 号:__________
常微分方程数值解---实验报告
一 实验目的:
1.掌握用MATLAB求微分方程初值问题数值解的方法;
2.通过实例学习微分方程模型解决简化的实际问题;
3.了解欧拉方法和龙格库塔方法的基本思想。
二 实验内容:
用欧拉方法和龙格库塔方法求下列微分方程初值问题的数值解,画出解的图形,对结果进行分析比较
三 问题分析:
怎样设计程序?流程图?变量说明?能否将某算法设计成具有形式参数的函数形式?
【程序如下】:
function f=f(x,y)
f=y+2*x;
clc;clear;
a=0;b=1; %求解区间
[x1,y_r]=ode45(f,[a b],1); %调用龙格库塔求解函数求解数值解;
%% 以下利用Euler方法求解
y(1)=1;N=100;h=(b-a)/N;
x=a:h:b;
for i=1:N
y(i+1)=y(i)+h*f(x(i),y(i));
end
figure(1)
plot(x1,y_r,r*,x,y,b+,x,3*exp(x)-2*x-2,k-);%数值解与真解图
title(数值解与真解图);
legend(RK4,Euler,真解);
xlabel(x);ylabel(y);
figure(2)
plot(x1,abs(y_r-(3*exp(x1)-2*x1-2)),k-);%龙格库塔方法的误差
title(龙格库塔方法的误差)
xlabel(x);ylabel(Error);
figure(3)
plot(x,abs(y-(3*exp(x)-2*x-2)),r-)%Euler方法的误差
title(Euler方法的误差)
xlabel(x);ylabel(Error);
【运行结果如下】:
5总结体会:
自己写了哦
显示全部