1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 常微分方程数值解matlab欧拉 MATLAB实验报告_常微分方程数值解

常微分方程数值解matlab欧拉 MATLAB实验报告_常微分方程数值解

时间:2021-10-14 05:07:50

相关推荐

常微分方程数值解matlab欧拉 MATLAB实验报告_常微分方程数值解

manlab软件应用试验题目

专业 序号 姓名 日期

实验3 常微分方程数值解

【实验目的】

1.掌握用MATLAB求微分方程初值问题数值解的方法;

2.通过实例学习微分方程模型解决简化的实际问题;

3.了解欧拉方法和龙格库塔方法的基本思想。

【实验内容】

用欧拉方法和龙格库塔方法求下列微分方程初值问题的数值解,画出解的图形,对结果进行分析比较

(1) y' y 2x,

y(0) 1

2(0 x 1),精确解y 3e 2x 2;2x

(2) y' x y, y(0) 0或y(0) 1 (0 x 10).

【解】:手工分析怎样求解

【计算机求解】:怎样设计程序?流程图?变量说明?能否将某算法设计成具有形式参数的函数形式?

【程序如下】:

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');

【运行结果如下】:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。