matlab求微分方程的解实验报告四.docx

上传人:b****6 文档编号:6325626 上传时间:2023-01-05 格式:DOCX 页数:10 大小:48.12KB
下载 相关 举报
matlab求微分方程的解实验报告四.docx_第1页
第1页 / 共10页
matlab求微分方程的解实验报告四.docx_第2页
第2页 / 共10页
matlab求微分方程的解实验报告四.docx_第3页
第3页 / 共10页
matlab求微分方程的解实验报告四.docx_第4页
第4页 / 共10页
matlab求微分方程的解实验报告四.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

matlab求微分方程的解实验报告四.docx

《matlab求微分方程的解实验报告四.docx》由会员分享,可在线阅读,更多相关《matlab求微分方程的解实验报告四.docx(10页珍藏版)》请在冰豆网上搜索。

matlab求微分方程的解实验报告四.docx

matlab求微分方程的解实验报告四

《matlab与数学实验》实验报告

实验序号:

实验四日期:

2015年5月25日

班级

132132002

姓名

彭婉婷

学号

1321320057

实验名称

求微分方程的解

问题背景描述

实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解).

实验目的

本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍Euler折线法.

实验原理与数学模型

MATLAB7.11.0

主要内容(要点)

1.求微分方程

的通解.

2.求微分方程

的通解.

3.求微分方程组

在初始条件

下的特解,并画出解函数

的图形.

4.分别用ode23、ode45求上述第3题中的微分方程初值问题的数值解(近似解),求解区间为

.利用画图来比较两种求解器之间的差异.

5.用Euler折线法求解微分方程初值问题

的数值解(步长h取0.1),求解范围为区间[0,2].

选做:

6.用四阶Runge-Kutta法求解微分方程初值问题

的数值解(步长h取0.1),求解范围为区间[0,3].迭代法

实验过程记录(含基本步骤、主要程序清单及异常情况记录等)

1.求微分方程

的通解.

程序:

clear

symsxy

y=dsolve('(x^2-1)*Dy+2*x*y=sin(x)','x')

答案:

y=-(C2+cos(x))/(x^2-1)

 

2.求微分方程

的通解.

程序:

clear

symsxy

y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x')

simplyify(x/y)weijiao

答案:

y=(exp(x)*sin(x))/6-(sin(3*x)*exp(x))/8+(sin(5*x)*exp(x))/24+C4*cos(2*x)*exp(x)+sin(2*x)*exp(x)*(cos(x)/4-cos(3*x)/12+1/6)+C5*sin(2*x)*exp(x)

3.求微分方程组

在初始条件

下的特解,并画出解函数

的图形.

程序:

clear

symsxyt

[x,y]=dsolve('Dx+x+y=0','Dy+x-y=0','x(0)=1','y(0)=0','t')

ezplot(x,y,[0,1])(t的取值,t是与x,y相关的,如果不给范围,则会默认为一个较大的区间)

simplify(x)

simplify(y)

答案:

x=exp(2^(1/2)*t)/2+1/(2*exp(2^(1/2)*t))-(2^(1/2)*exp(2^(1/2)*t))/4+2^(1/2)/(4*exp(2^(1/2)*t))

y=2^(1/2)/(4*exp(2^(1/2)*t))-(2^(1/2)*exp(2^(1/2)*t))/4

图形:

 

4.分别用ode23、ode45求上述第3题中的微分方程初值问题的数值解(近似解),求解区间为

.利用画图来比较两种求解器之间的差异.

先编写函数文件verderpol.m:

clear

functionxprime=verderpol(t,x)

xprime=[-x

(1)-x

(2);x

(2)-x

(1)];

再编写命令文件

clear

y0=[1;0];

[t,x]=ode45('verderpol',[0,2],y0);

x1=x(:

1);x2=x(:

2);

plot(x1,x2,'b-')

holdon

y0=[1;0];

[t,x]=ode23('verderpol',[0,2],y0);

x1=x(:

1);x2=x(:

2);

plot(x(:

1),x(:

2),'r-');

图形:

两种求解器之间的差异:

ode45大部分场合的首选算法

ode23使用于精度较低的情形

但在此题中并没有体现出差异。

 

5.用Euler折线法求解微分方程初值问题

的数值解(步长h取0.1),求解范围为区间[0,2].

程序:

clear

f=sym('y+2*x/y^2');

a=0;

b=2;

h=0.4;

n=(b-a)/h+1;

x=0;

y=1;

szj=[x,y];

fori=1:

n-1

y=y+h*subs(f,{'x','y'},{x,y});

x=x+h;

szj=[szj;x,y];

end

szj

plot(szj(:

1),szj(:

2))

答案:

szj=

01.0000

0.10001.1000

0.20001.2010

0.30001.2934

0.40001.3728

0.50001.4359

0.60001.4781

0.70001.4921

0.80001.4644

0.90001.3662

1.00001.1217

1.10000.3836

1.2000-25.3054

1.3000-27.8358

1.4000-30.6193

1.5000-33.6812

1.6000-37.0492

1.7000-40.7541

1.8000-44.8294

1.9000-49.3123

2.0000-54.2435

图像:

6.用四阶Runge-Kutta法求解微分方程初值问题

的数值解(步长h取0.1),求解范围为区间[0,3].迭代法

程序:

clear

f=sym('y-exp(x)*cos(x)');

a=0;

b=3;

h=0.1;

n=(b-a)/h+1;

x=0;

y=1;

szj=[x,y];

fori=1:

n-1

l1=subs(f,{'x','y'},{x,y});

l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});

l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});

l4=subs(f,{'x','y'},{x+h,y+l3*h});

y=y+h*(l1+2*l2+2*l3+l4)/6;

x=x+h;

szj=[szj;x,y];

end

szj

plot(szj(:

1),szj(:

2))

答案:

szj=

01.0000

0.10000.9948

0.20000.9787

0.30000.9509

0.40000.9109

0.50000.8583

0.60000.7933

0.70000.7165

0.80000.6290

0.90000.5329

1.00000.4309

1.10000.3268

1.20000.2256

1.30000.1337

1.40000.0590

1.50000.0112

1.60000.0021

1.70000.0456

1.80000.1582

1.90000.3590

2.00000.6702

2.10001.1171

2.20001.7283

2.30002.5364

2.40003.5774

2.50004.8916

2.60006.5231

2.70008.5204

2.800010.9359

2.900013.8260

3.000017.2510

图形:

 

实验结果报告与实验总结

本实验主要研究微分方程(组)的解析解法(精确解)和微分方程(组)的数值解法(近似解).

前两题主要用dslove语句即可运行成功。

第3题求解微分方程组也用到了dslove语句,和ezplot画图,有一个疑点一直想不清楚,就是ezplot后面的范围[0,1],用不同的取值图形就完全不相同,正确的取值应该如何选取?

第4题用ode23、ode45求微分方程初值问题的数值解(近似解),用holdon直接就能在图上比较差异。

5、6两题直接在原有程序更改步长和区间取值即可。

教师评语

 

实验成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1