10级常微分实习.docx
- 文档编号:6047712
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:17
- 大小:106.24KB
10级常微分实习.docx
《10级常微分实习.docx》由会员分享,可在线阅读,更多相关《10级常微分实习.docx(17页珍藏版)》请在冰豆网上搜索。
10级常微分实习
福建农林大学计算机与信息学院
(数学类课程)
课程实习报告
课程名称:
常微分方程课程实习
实习题目:
常微分方程数值求解问题的实习
姓名:
邱育华
系:
信息与计算科学
专业:
信息与计算科学
年级:
2010
学号:
102260003049
指导教师:
陈永雪
职称:
讲师
2011年11月19日
福建农林大学计算机与信息学院数学类
课程实习报告结果评定
评语:
成绩:
指导教师签字:
评定日期:
目录
1、实习的目的和任务…………………………………………4
2、实习要求……………………………………………………4
3、实习地点……………………………………………………4
4、实验主要仪器………………………………………………4
5、实验主要内容………………………………………………4
5.1、用不同格式对一个初值问题的数值求解极其分析……………4
5.1.1、求精确解………………………………………………………4
5.1.2、用欧拉法求解…………………………………………………5
5.1.3、用4级4阶龙格库塔法求解…………………………………8
5.1.4、问题的讨论与分析……………………………………………10
5.2、一个算法不同步长求解同一个初值问题及分析………………16
6、数值求解Lorenz方程………………………………………18
7、结束语……………………………………………………………………19
参考文献
常微分方程课程实习
1.实习的目的和任务
目的:
通过课程实习能够应用MATLAB软来计算微分方程(组)的数值解;了解常微分方程数值解。
任务:
通过具体的问题,利用MATLAB软件来计算问题的结果,分析问题的结论。
2.实习要求
能够从案例的自然语言描述中,抽象出其中的数学模型;能够熟练应用所学的数值解计算方法;能够熟练使用MATLAB软件;对常微分方程数值解有所认识,包括对不同算法有所认识和对步长有所认识。
3.实习地点
数学实验室、学生宿舍
4.主要仪器设备
计算机、
MicrosoftWindows7
Matlab(R2009a)
5.实习内容
5.1先求精确解,然后用欧拉方法、4阶龙格—库塔方法分别求下面微分方程的初值dy/dx=(y^2-x-2)/(4(x+1))y(0)=2x∈[0,2]
5.1.1求精确解
首先可以求得其精确解为:
y=sqrt(x+1)+1
5.1.1程序代码:
(1)
>>x=0:
0.1:
2;
>>y1=sqrt(x+1)+1;
>>plot(x,y,'b*-');
y=
Columns1through10
2.00002.04882.09542.14022.18322.22472.26492.30382.34162.3784
Columns11through20
2.41422.44912.48322.51662.54922.58112.61252.64322.67332.7029
Column21
2.7321
即对应的[x,y]为:
02
0.10002.0488
0.20002.0954
0.30002.1402
0.40002.1832
0.50002.2247
0.60002.2649
0.70002.3038
0.80002.3416
0.90002.3784
1.00002.4142
1.10002.4491
1.20002.4832
1.30002.5166
1.40002.5492
1.50002.5811
1.60002.6125
1.70002.6432
1.80002.6733
1.90002.7029
2.00002.7321
对应的图像为:
5.1.2用欧拉法求解
程序如下:
建立函数文件yu.m
function[x,y]=yu(fun,x,y0,h)
x=x
(1):
h:
x
(2);
y
(1)=y0;
forn=1:
length(x)-1
y(n+1)=y(n)+h*feval(fun,x(n),y(n));
end
x=x';y=y';
在MATLAB输入以下程序:
>>clearall
>>fun=inline('(y^2-x-2)/(4*(x+1))');
>>[x,y]=yu(fun,[0,2],2,0.1);
>>[x,y]
>>plot(x,y,'r*-')
结果及其图象:
ans=
02.0000
0.10002.0500
0.20002.0978
0.30002.1436
0.40002.1878
0.50002.2304
0.60002.2716
0.70002.3116
0.80002.3505
0.90002.3884
1.00002.4253
1.10002.4613
1.20002.4965
1.30002.5309
1.40002.5647
1.50002.5978
1.60002.6303
1.70002.6622
1.80002.6936
1.90002.7244
2.00002.7548
5.1.4用4阶龙格—库塔求解
程序如下:
建立函数文件yu2.m
function[x,y]=yu2(fun,x,y0,h)
x=x
(1):
h:
x
(2);
y
(1)=y0;
forn=1:
length(t)-1
k1=feval(fun,t(n),y(n));
k2=feval(fun,t(n)+h/2,y(n)+h/2*k1);
k3=feval(fun,t(n)+h/2,y(n)+h/2*k2);
k4=feval(fun,t(n+1),y(n)+h*k3);
y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;
end
x=x';y=y';
在MATLAB输入以下程序:
>>clearall;
>>fun=inline('(y^2-x-2)/(4*(x+1))');
>>[x,y]=yu2(fun,[0,2],2,0.1);
>>[x,y]
>>plot(x,y,'r*-')
结果及其图象:
ans=
02.0000
0.10002.0488
0.20002.0954
0.30002.1402
0.40002.1832
0.50002.2247
0.60002.2649
0.70002.3038
0.80002.3416
0.90002.3784
1.00002.4142
1.10002.4491
1.20002.4832
1.30002.5166
1.40002.5492
1.50002.5811
1.60002.6125
1.70002.6432
1.80002.6733
1.90002.7029
2.00002.7321
5.1.5问题讨论与分析
由以上数值分析结果绘制表格:
精确解
欧拉方法
四阶龙格-库塔方法
1xi
yi
yi
误差
yi
误差
0
2.0000
2.0000
0
2.0000
0
0.1
2.0488
2.0500
0.0012
2.0848
0
0.2
2.0954
2.0978
0.0024
2.0954
0
0.3
2.1402
2.1436
0.0034
2.2402
0
0.4
2.1832
2.1878
0.0046
2.1832
0
0.5
2.2247
2.2304
0.9957
2.2247
0
0.6
2.2649
2.2716
0.0067
2.2649
0
0.7
2.3038
2.3116
0.0078
2.3038
0
0.8
2.3416
2.3505
0.0089
2.3416
0
0.9
2.3784
2.3884
0.0100
2.3784
0
1.0
2.4142
2.4252
0.0111
2.4142
0
1.1
2.4491
2.4613
0.0112
2.4491
0
1.2
2.4832
2.4965
0.0133
2.4832
0
1.3
2.5166
2.5309
0.0143
2.5166
0
1.4
2.5492
2.5647
0.0155
2.5492
0
1.5
2.5811
2.5978
0.0167
2.5811
0
1.6
2.6125
2.6303
0.0178
2.6125
0
1.7
2.6432
2.6622
0.0190
2.6432
0
1.8
2.6733
2.6936
0.0203
2.6733
0
1.9
2.7029
2.7224
0.0215
2.7029
0
2.0
2.7321
2.7548
0.0227
2.7321
0
x=0:
0.1:
2;
>>y1=[2.00002.08482.09542.14022.18322.22472.26492.30382.34162.37842.41422.44912.48322.51662.54922.58112.61252.64322.67332.70292.7321]
>>y2=[2.00002.05002.09782.14362.18782.23042.27162.31162.35052.38842.42532.46132.49652.53092.56472.59782.63032.66222.69362.72442.7548]
>>y3=[2.00002.04882.09542.14022.18322.22472.26492.30382.34162.37842.41422.44912.48322.51662.54922.58112.61252.64322.67332.70292.7321]
输入代码得到图形并进行比较误差:
>>plot(x,y1,'r+-')
>>holdon,plot(x,y2,'b-')
>>plot(x,y1,'r+-')
>>holdon,plot(x,y3,'b-')
精确解与欧拉方法的比较
精确解与四阶龙格库塔方法的比较
由上表和图可以看出欧拉法误差很大,而龙格—库塔方法误差相对很小,龙格—库塔方法误差小到大部分值都跟精确值相同。
由欧拉图与精确图相比可清晰看到,随着x的增加,函数值与精确值的偏差越来越大。
5.2选择用欧拉方法,改进欧拉方法,4阶龙格—库塔方法之一取不同步长分别求下面微分方程的初值dy/dx=ycosxy(0)=1x∈[0,2],并对结果进行分析说明,给出你的结论。
程序代码如下:
建立函数文件yu3.m:
y0=2;
h=[0.1,0.2,0.3];
boy=inline('(y^2-x-2)/(4*(x+1))');
fori=1:
3
t=0:
h(i):
2;
y=[];
y
(1)=y0;
forn=1:
length(t)-1
k1=feval(boy,t(n),y(n));
y(n+1)=y(n)+h(i)*k1;
k2=feval(boy,t(n+1),y(n+1));
y(n+1)=y(n)+h(i)*(k1+k2)/2;
end
switchh(i)
case0.1
disp('whileh==0.1');
holdon
plot(t,y,'k:
')
case0.2
disp('whileh==0.2')
holdon
plot(t,y,'g+-');
case0.3
disp('whileh==0.3')
holdon
plot(t,y,'b-')
end
t=t'
y=y'
end
得到的结果:
whileh==0.1
t=
0
0.1000
0.2000
0.3000
0.4000
0.5000
0.6000
0.7000
0.8000
0.9000
1.0000
1.1000
1.2000
1.3000
1.4000
1.5000
1.6000
1.7000
1.8000
1.9000
2.0000
y=
2.0000
2.0489
2.0956
2.1404
2.1835
2.2251
2.2653
2.3043
2.3422
2.3790
2.4149
2.4498
2.4840
2.5174
2.5501
2.5821
2.6135
2.6442
2.6744
2.7041
2.7333
whileh==0.2
t=
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
y=
2.0000
2.0960
2.1843
2.2665
2.3437
2.4167
2.4861
2.5525
2.6163
2.6776
2.7368
whileh==0.3
t=
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
y=
2.0000
2.1420
2.2683
2.3832
2.4894
2.5888
2.6824
画出的图像:
结果分析:
此次实验结果为用改进欧拉方法取不同的步长而得到的结果。
黑线虚线为用改进欧拉方法取步长0.01的曲线,绿色为用0.2的曲线,蓝色线为用改进欧拉方法步长取0.3.有图可知,当取不同的步长随着x的值越大,y的值偏差就越大,由此说明在用同一种方法求解此方程且取不同步长时误差大。
6.数值求解Lorenz方程
﹛dx/dt=a(y-x);dy/dt=-xz+cx-y;dz/dt=xy-bz﹜
其中参数a=10,b=8/3;c=28.
首先假设其初值为:
x0=[0;0;1e-10]
程序如下:
f=@(t,x)[-8/3*x
(1)+x
(2)*x(3);-10*x
(2)+10*x(3);-x
(1)*x
(2)+-x
(1)*x
(2)+28*x
(2)-x(3)];
t_final=100;
x0=[0;0;1e-10]
[t,x]=ode45(f,[0,t_final],x0)
figure
(2)
plot3(x(:
1),x(:
2),x(:
3));
axis([1042-2020-2020])
图像结果为:
结果分析:
对于不同的参数a,b,c.其解的情况是不同的,lorenz方程的图像会呈现出各种复杂的轨线状态,对应于奇异吸引子和混沌现象。
这些结果是复杂的,由于本人知识太浅薄,对此只能说些粗浅的了解。
7.结束语
通过这次的实习,让我更深刻地明白的常微分方程的求解过程,复杂的数值求解问题,当然最重要的就是利用计算机对复杂方程的求解,更深刻熟练地掌握了数学软件MATLAB的实际应用。
现实中的实际问题往往可以抽象成方程模型,利用数学知识求解,由于数据量的庞大,依靠人的手算是无法解得结果的,这就体现了计算机的重要性!
从这次的实习中,还有一个很重要的就是通过对比集中方法的结果,理性地分析得到较优的解决方案,这在实际中是很有借鉴意义的!
参考文献
[1]刘卫国.《MATLAB程序设计与应用》(第二版).北京:
高等教育出版社,2006.7
[2]姜健飞、胡良剑、唐俭.《数值分析及其MATLAB实验》.上海:
科学出版社,2004
[3]王学彬.《基于MATLAB求解常微分方程》.武夷学院学报[N].2010.10
[4]王高雄.《常微分方程》(第三版)。
北京:
高等教育出版社,2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 微分 实习