您的当前位置:首页正文

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

2024-05-12 来源:V品旅游网
专业 序号 姓名 日期

实验3 常微分方程数值解

【实验目的】

1.掌握用MATLAB求微分方程初值问题数值解的方法; 2.通过实例学习微分方程模型解决简化的实际问题; 3.了解欧拉方法和龙格库塔方法的基本思想。

【实验内容】

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

y'y2x,(1)(0x1),精确解y3ex2x2;y(0)1

22y'xy,(2)(0x10).y(0)0或y(0)1

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

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

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

【运行结果如下】:

【结果分析】:龙格库塔方法和Euler方法求解常微分方程都能获得比较好的数值解,相比较而言龙格库塔方法的数值解的精度远远要比Euler方法的数值解的精度高。

因篇幅问题不能全部显示,请点此查看更多更全内容