常微分方程数值解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');

【运行结果如下】:

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值