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

更新时间:2023-08-09 02:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

【运行结果如下】:

manlab软件应用试验题目

manlab软件应用试验题目

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

本文来源:https://www.bwwdw.com/article/p0kj.html

Top