常微分实习指导书
- 格式:doc
- 大小:541.00 KB
- 文档页数:17
目录1.实习的目的和任务2.实习要求3.实习地点4.主要仪器设备5.实习内容5.1 用不同格式对同一个初值问题的数值求解及其分析5.1.1求精确解5.1.2用欧拉法求解5.1.3用改进欧拉法求解5.1.4用4级4阶龙格—库塔法求解5.1.5 问题讨论与分析5.2 一个算法不同不长求解同一个初值问题及其分析6.结束语参考文献常微分方程课程实习1. 实习的目的和任务目的:通过课程实习能够应用MATLAB软来计算微分方程(组)的数值解;了解常微分方程数值解。
任务:通过具体的问题,利用MATLAB软件来计算问题的结果,分析问题的结论。
2. 实习要求能够从案例的自然语言描述中,抽象出其中的数学模型;能够熟练应用所学的数值解计算方法;能够熟练使用MATLAB软件;对常微分方程数值解有所认识,包括对不同算法有所认识和对步长有所认识。
3. 实习地点数学实验室、学生宿舍4. 主要仪器设备计算机、Microsoft Windows XP Matlab 7.05. 实习内容5.2 用不同格式对同一初值问题的数值求解及其分析用欧拉方法,改进欧拉方法,4阶龙格—库塔方法分别求下面微分方程的初值dy/dx=cos(x).^2-(tan(x))*y y(0)=2 x ∈(-2π,2π) 1.1 .1求精确解首先可以求得其精确解为:y=sin(x)*cos(x)+2*cos(x) 5.2.1 程序代码:x=-2*pi:0.1:2*pi;y=sin(x).*cos(x)+2*cos(x) plot(x,y,'b*-'); Data=[x',y' ]-8-6-4-22468-2.5-2-1.5-1-0.500.511.522.55.2.2用欧拉法求解 程序如下:建立函数文件cwfa1.mfunction [x,y]=cwfa1(fun,x_span,y0,h) x=x_span(1):h:x_span(2); y(1)=y0;for n=1:length(x)-1y(n+1)=y(n)+h*feval(fun,x(n),y(n)); end x=x';y=y';在MATLAB 输入以下程序:clear allfun=inline(' cos(x).^2-(tan(x))*y '); [x,y]=cwfa1(fun,[-2*pi,2*pi],2,0.1); [x,y]plot(x,y,'r*-')-8-6-4-202468-4-3-2-1012345.2.3用改进欧拉法求解: 程序如下:建立函数文件cwfa2.mfunction [x,y]=cwfa 2(fun,x_span,y0,h) x=x_span(1):h:x_span(2); y(1)=y0;for n=1:length(x)-1 k1=feval(fun,x(n),y(n)); y(n+1)=y(n)+h*k1; k2=feval(fun,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2; end x=x';y=y';在MATLAB 输入以下程序:clear allfun=inline('cos(x).^2-(tan(x))*y'); [x,y]=cwfa2(fun,[-2*pi,2*pi],2,0.1); [x,y]plot(x,y,'y+-')-8-6-4-202468-3-2-112345.2.4 用4阶龙格—库塔求解 程序如下:建立函数文件cwfa3.mfunction [x,y]=cwfa3(fun,x_span,y0,h) x=x_span(1):h:x_span(2); y(1)=y0;for n=1:length(x)-1 k1=feval(fun,x(n),y(n));k2=feval(fun,x(n)+h/2,y(n)+h/2*k1); k3=feval(fun,x(n)+h/2,y(n)+h/2*k2); k4=feval(fun,x(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 输入以下程序: clear all;fun=inline(' cos(x).^2-(tan(x))*y'); [x,y]=cwfa3(fun,[-2*pi,2*pi],2,0.1); [x,y]plot(x,y, 'g+-')-8-6-4-22468-2.5-2-1.5-1-0.500.511.522.55.2.5 问题讨论与分析 由以上数值分析结果绘制表格:x=-2*pi:0.1:2*pi;y=sin(x).*cos(x)+2*cos(x) plot(x,y,'b*-'); hold on Data=[x',y']fun=inline(' cos(x).^2-(tan(x))*y '); [x,y1]=cwfa1(fun,[-2*pi,2*pi],2,0.1); plot(x,y1,'r*-')fun=inline('cos(x).^2-(tan(x))*y'); [x,y2]=cwfa2(fun,[-2*pi,2*pi],2,0.1); plot(x,y2,'y+-')fun=inline(' cos(x).^2-(tan(x))*y');[x,y3]=cwfa3(fun,[-2*pi,2*pi],2,0.1);plot(x,y3, 'g+-')D=[x,y',y1,y1-y',y2,y2-y',y3,y3-y']%利用矩阵D=-6.2832 2.0000 2.0000 -0.0000 2.0000 -0.0000 2.0000 -0.0000-6.1832 2.0893 2.1000 0.0107 2.0890 -0.0004 2.0893 -0.0000 -6.0832 2.1548 2.1779 0.0231 2.1541 -0.0008 2.1548 -0.0000 -5.9832 2.1930 2.2298 0.0368 2.1918 -0.0012 2.1930 -0.0000 -5.8832 2.2008 2.2521 0.0513 2.1991 -0.0017 2.2008 -0.0000 -5.7832 2.1759 2.2417 0.0658 2.1737 -0.0022 2.1759 -0.0000 -5.6832 2.1167 2.1963 0.0796 2.1139 -0.0028 2.1167 -0.0000 -5.5832 2.0224 2.1142 0.0917 2.0191 -0.0033 2.0224 -0.0000 -5.4832 1.8932 1.9946 0.1014 1.8894 -0.0038 1.8932 -0.0000 -5.3832 1.7301 1.8377 0.1076 1.7259 -0.0043 1.7301 -0.0000 -5.2832 1.5353 1.6448 0.1096 1.5306 -0.0047 1.5352 -0.0000 -5.1832 1.3114 1.4178 0.1064 1.3065 -0.0050 1.3114 -0.0000 -5.0832 1.0624 1.1598 0.0974 1.0573 -0.0051 1.0624 -0.0000 -4.9832 0.7927 0.8746 0.0819 0.7877 -0.0051 0.7927 -0.0000 -4.8832 0.5074 0.5667 0.0593 0.5027 -0.0048 0.5074 -0.0000 -4.7832 0.2120 0.2410 0.0290 0.2077 -0.0044 0.2119 -0.0002 -4.6832 -0.0876 -0.0984 -0.0108 -0.0834 0.0042 -0.0829 0.0047 -4.5832 -0.3855 -0.4350 -0.0495 -0.3672 0.0183 -0.3647 0.0208 -4.4832 -0.6757 -0.7681 -0.0925 -0.6439 0.0317 -0.6390 0.0367 -4.3832 -0.9525 -1.0922 -0.1397 -0.9080 0.0445 -0.9003 0.0522 -4.2832 -1.2107 -1.4014 -0.1907 -1.1541 0.0565 -1.1435 0.0672 -4.1832 -1.4455 -1.6903 -0.2449 -1.3776 0.0679 -1.3640 0.0815 -4.0832 -1.6528 -1.9539 -0.3011 -1.5744 0.0784 -1.5578 0.0950 -3.9832 -1.8294 -2.1877 -0.3583 -1.7413 0.0881 -1.7219 0.1075 -3.8832 -1.9729 -2.3881 -0.4153 -1.8760 0.0969 -1.8539 0.1190 -3.7832 -2.0817 -2.5525 -0.4708 -1.9771 0.1047 -1.9524 0.1293 -3.6832 -2.1555 -2.6790 -0.5235 -2.0441 0.1114 -2.0172 0.1383-3.5832 -2.1945 -2.7667 -0.5722 -2.0775 0.1171 -2.0486 0.1459 -3.4832 -2.2001 -2.8158 -0.6157 -2.0785 0.1215 -2.0480 0.1521 -3.3832 -2.1742 -2.8271 -0.6529 -2.0494 0.1248 -2.0175 0.1567 -3.2832 -2.1197 -2.8025 -0.6828 -1.9928 0.1269 -1.9599 0.1598 -3.1832 -2.0398 -2.7445 -0.7046 -1.9121 0.1277 -1.8786 0.1613 -3.0832 -1.9383 -2.6561 -0.7177 -1.8110 0.1273 -1.7772 0.1611 -2.9832 -1.8192 -2.5409 -0.7217 -1.6935 0.1257 -1.6598 0.1594 -2.8832 -1.6865 -2.4028 -0.7162 -1.5638 0.1228 -1.5305 0.1560 -2.7832 -1.5444 -2.2458 -0.7014 -1.4258 0.1187 -1.3933 0.1511 -2.6832 -1.3967 -2.0740 -0.6773 -1.2833 0.1134 -1.2519 0.1447 -2.5832 -1.2468 -1.8912 -0.6444 -1.1399 0.1070 -1.1100 0.1369 -2.4832 -1.0980 -1.7011 -0.6032 -0.9985 0.0995 -0.9703 0.1277 -2.3832 -0.9526 -1.5070 -0.5544 -0.8615 0.0911 -0.8354 0.1172 -2.2832 -0.8126 -1.3115 -0.4989 -0.7309 0.0817 -0.7071 0.1055 -2.1832 -0.6793 -1.1169 -0.4376 -0.6078 0.0715 -0.5865 0.0928 -2.0832 -0.5532 -0.9249 -0.3717 -0.4926 0.0607 -0.4741 0.0791 -1.9832 -0.4344 -0.7364 -0.3020 -0.3852 0.0492 -0.3697 0.0647 -1.8832 -0.3222 -0.5520 -0.2298 -0.2849 0.0373 -0.2726 0.0496 -1.7832 -0.2155 -0.3717 -0.1561 -0.1904 0.0251 -0.1815 0.0340 -1.6832 -0.1129 -0.1949 -0.0820 -0.1002 0.0127 -0.0948 0.0181 -1.5832 -0.0124 -0.0210 -0.0086 -0.0142 -0.0018 -0.0111 0.0013 -1.4832 0.0878 0.1482 0.0603 0.1003 0.0125 0.0787 -0.0092 -1.3832 0.1898 0.3176 0.1279 0.2163 0.0265 0.1702 -0.0196 -1.2832 0.2953 0.4884 0.1931 0.3354 0.0401 0.2655 -0.0298 -1.1832 0.4060 0.6616 0.2556 0.4593 0.0532 0.3663 -0.0397 -1.0832 0.5231 0.8380 0.3148 0.5889 0.0658 0.4739 -0.0492 -0.9832 0.6474 1.0179 0.3706 0.7249 0.0776 0.5891 -0.0582 -0.8832 0.7789 1.2015 0.4226 0.8675 0.0886 0.7123 -0.0667 -0.7832 0.9173 1.3880 0.4707 1.0160 0.0986 0.8429 -0.0744 -0.6832 1.0615 1.5764 0.5149 1.1692 0.1077 0.9801 -0.0815 -0.5832 1.2098 1.7649 0.5552 1.3254 0.1157 1.1221 -0.0877-0.4832 1.3596 1.9510 0.5914 1.4821 0.1225 1.2666 -0.0930 -0.3832 1.5082 2.1318 0.6236 1.6362 0.1280 1.4108 -0.0974 -0.2832 1.6521 2.3038 0.6517 1.7843 0.1323 1.5512 -0.1008 -0.1832 1.7874 2.4630 0.6756 1.9226 0.1352 1.6842 -0.1033 -0.0832 1.9103 2.6053 0.6950 2.0469 0.1367 1.8056 -0.1047 0.0168 2.0165 2.7263 0.7098 2.1533 0.1368 1.9115 -0.1050 0.1168 2.1021 2.8217 0.7196 2.2376 0.1355 1.9978 -0.1043 0.2168 2.1633 2.8873 0.7240 2.2960 0.1328 2.0607 -0.1026 0.3168 2.1965 2.9190 0.7225 2.3252 0.1287 2.0967 -0.0998 0.4168 2.1990 2.9136 0.7147 2.3223 0.1233 2.1029 -0.0960 0.5168 2.1684 2.8682 0.6998 2.2850 0.1166 2.0771 -0.0913 0.6168 2.1033 2.7808 0.6775 2.2120 0.1087 2.0176 -0.0857 0.7168 2.0031 2.6501 0.6470 2.1028 0.0997 1.9239 -0.0792 0.8168 1.8681 2.4760 0.6079 1.9578 0.0897 1.7962 -0.07190.9168 1.6995 2.2592 0.5597 1.7784 0.0788 1.6356 -0.06391.0168 1.49962.0015 0.5019 1.5667 0.0672 1.4443 -0.0553 1.1168 1.2712 1.7056 0.4344 1.3261 0.0549 1.2252 -0.0461 1.2168 1.0184 1.3753 0.3569 1.0606 0.0422 0.9820 -0.0364 1.3168 0.7457 1.0152 0.2695 0.7749 0.0292 0.7193 -0.0264 1.4168 0.4583 0.6304 0.1721 0.4745 0.0162 0.4422 -0.0162 1.5168 0.1618 0.2266 0.0648 0.1646 0.0028 0.1559 -0.0059 1.6168 -0.1380 -0.1925 -0.0545 -0.1392 -0.0012 -0.0725 0.0655 1.7168 -0.4350 -0.6102 -0.1753 -0.4391 -0.0042 -0.2278 0.2071 1.8168 -0.7233 -1.0230 -0.2997 -0.7309 -0.0076 -0.3766 0.34671.9168 -0.9974 -1.4245 -0.4271 -1.0086 -0.0112 -0.5146 0.48272.0168 -1.2519 -1.8081 -0.5562 -1.2669 -0.0150 -0.6379 0.6140 2.1168 -1.4824 -2.1677 -0.6853 -1.5012 -0.0188 -0.7432 0.7391 2.2168 -1.6847 -2.4974 -0.8127 -1.7072 -0.0225 -0.8278 0.8569 2.3168 -1.8559 -2.7924 -0.9366 -1.8819 -0.0261 -0.8898 0.9661 2.4168 -1.9936 -3.0485 -1.0549 -2.0230 -0.0294 -0.9280 1.0656 2.5168 -2.0966 -3.2624 -1.1658 -2.1291 -0.0324 -0.9421 1.15452.6168 -2.1645 -3.4319 -1.2675 -2.1996 -0.0352 -0.9327 1.2318 2.7168 -2.1978 -3.5557 -1.3580 -2.2353 -0.0375 -0.9009 1.2969 2.8168 -2.1979 -3.6335 -1.4357 -2.2374 -0.0395 -0.8489 1.34892.9168 -2.1670 -3.6661 -1.4991 -2.2080 -0.0411 -0.7794 1.38753.0168 -2.1079 -3.6548 -1.5469 -2.1501 -0.0422 -0.6957 1.4123 3.1168 -2.0242 -3.6022 -1.5781 -2.0670 -0.0428 -0.6012 1.4229 3.2168 -1.9194 -3.5112 -1.5918 -1.9624 -0.0430 -0.5001 1.4193 3.3168 -1.7977 -3.3853 -1.5876 -1.8404 -0.0427 -0.3962 1.4016 3.4168 -1.6632 -3.2284 -1.5652 -1.7052 -0.0420 -0.2934 1.3698 3.5168 -1.5199 -3.0446 -1.5248 -1.5607 -0.0409 -0.1956 1.3243 3.6168 -1.3715 -2.8382 -1.4666 -1.4108 -0.0393 -0.1059 1.2656 3.7168 -1.2217 -2.6131 -1.3914 -1.2590 -0.0373 -0.0274 1.1943 3.8168 -1.0732 -2.3732 -1.3000 -1.1082 -0.0350 0.0378 1.11103.9168 -0.9286 -2.1223 -1.1936 -0.9609 -0.0322 0.0880 1.01664.0168 -0.7897 -1.8633 -1.0736 -0.8189 -0.0292 0.1224 0.9121 4.1168 -0.6576 -1.5990 -0.9414 -0.6834 -0.0259 0.1409 0.7985 4.2168 -0.5327 -1.3316 -0.7988 -0.5550 -0.0222 0.1441 0.6769 4.3168 -0.4151 -1.0626 -0.6475 -0.4335 -0.0184 0.1334 0.5485 4.4168 -0.3039 -0.7933 -0.4894 -0.3182 -0.0143 0.1107 0.4146 4.5168 -0.1980 -0.5243 -0.3263 -0.2080 -0.0100 0.0785 0.2766 4.6168 -0.0959 -0.2559 -0.1600 -0.1014 -0.0056 0.0399 0.1358 4.7168 0.0044 0.0119 0.0075 0.0116 0.0072 0.0030 -0.0014 4.8168 0.1048 0.2818 0.1770 0.2744 0.1696 0.0723 -0.03254.9168 0.2072 0.5518 0.3445 0.5375 0.3303 0.1439 -0.06335.0168 0.3135 0.8220 0.5085 0.8011 0.4876 0.2200 -0.0935 5.1168 0.4252 1.0927 0.6674 1.0652 0.6400 0.3025 -0.1228 5.2168 0.5435 1.3634 0.8199 1.3295 0.7860 0.3927 -0.1508 5.3168 0.6690 1.6337 0.9648 1.5931 0.9242 0.4916 -0.1773 5.4168 0.8017 1.9026 1.1009 1.8548 1.0531 0.5997 -0.2021 5.5168 0.9412 2.1684 1.2272 2.1126 1.1714 0.7164 -0.2248 5.6168 1.0862 2.4290 1.3428 2.3643 1.2780 0.8410 -0.24535.7168 1.2349 2.6818 1.4469 2.6068 1.3719 0.9716 -0.2633 5.8168 1.3848 2.9236 1.5388 2.8367 1.4519 1.1061 -0.2787 5.9168 1.5328 3.1505 1.6177 3.0503 1.5175 1.2415 -0.29136.0168 1.6755 3.3586 1.6831 3.2433 1.5678 1.3745 -0.3010 6.1168 1.8091 3.5433 1.7342 3.4115 1.6024 1.5013 -0.30776.2168 1.9294 3.7000 1.7706 3.5504 1.6210 1.6181 -0.3113-8-6-4-202468-4-3-2-101234在matlab 中输入以下代码:subplot(2,2,1); plot(x,y,'b*-'); hold onplot(x,y1,'r*-') subplot(2,2,2); plot(x,y,'b*-'); plot(x,y2,'r*-') subplot(2,2,3); plot(x,y,'b*-'); plot(x,y3,'r*-') subplot(2,2,4); plot(x,y,'b*-'); plot(x,y,'b*-') plot(x,y1,'r*-')plot(x,y2,'y*-') plot(x,y3,'g*-')-10-50510-4-2024-10-50510-4-2024-10-50510-4-2024-10-50510-4-2024第一幅是精确解与欧拉方法的对比,第二幅是精确解与改进欧拉方法的对比,第三幅则是精确解与龙格-库塔法德比较用excel 分别求出他们对精确解的最小二乘估计:CORREL(y,y1)=0.976423,CORREL(y,y2)=0.975323和CORREL(y,y3)=0..95654(CORREL 是excel 的最小二乘估计函数函数)由最小二乘结果可以看出欧拉法误差最大,而改进欧拉和龙格—库塔方法误差相对较小,但是从图像的拟合程度上来说,改进的欧拉方法是最理想的。
数学与信息科学系实训报告常微分方程初值问题数值解法及其MATLAB实现姓名:学号:专业:信息与计算科学年级:2010级指导教师:朱耀生完成时间:2013年11月25—2013年12月6实验目的:(1)研究满足给定方程的可微函数的数值方法(2)培养matlab编程和上机调试能力实验基本原理和内容:根据给定的初始条件,确定常微分方程惟一解的问题叫常微分方程初值问题。
大多数实际问题难以求得解析解,必须将微分问题离散化,用数值方法求其近似解。
一阶常微分方程的初值问题的提法是,求出函数,使满足条件(1)利用数值方法解问题(1)时,通常假定解存在且惟一,解函数及右端函数具有所需的光滑程度。
数值解法的基本思想是:先取自变量一系列离散点,把微分问题(1)离散化,求出离散问题的数值解,并以此作为微分问题解的近似。
例如取步长>0,以剖分区间[,],令=+,把微分方程离散化成一个差分方程。
以()表微分方程初值问题的解,以表差分问题的解,就是近似解的误差,称为全局误差。
因此,设计各种离散化模型,求出近似解,估计误差以及研究数值方法的稳定性和收敛性等构成了数值解法的基本内容1.欧拉法和后退欧拉法原理:function [x,y]=meuler(df,xspan,y0,h)%用途:改进欧拉公式解常微分方程y'=f(x,y), y(x0)=y0%格式:[xy]=meuler(df,a,b,y0,h) df为函数f(x,y), xspan为求解%区间[x0,xn], y0为初值y(x0), h为步长, [xy]返回节点和数值解矩阵x=xspan(1):h:xspan(2); y(1)=y0;for n=1:(length(x)-1)k1=feval(df,x(n),y(n));y(n+1)=y(n)+h*k1;k2=feval(df,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2;end例题给定的初值问题y′=-y+x+2,0=<x=<1Y(0)=-1,取精确解y(x)=exp(-x)+x后退欧拉法,步长h=0.003, h=0.1求在节点k=1+0.1k (k=1,2,3……10)处的数值解若>>h=0.1;y=-1;x=1;for i=1:20k1=h*oulei_wf(x,y);k2=h*oulei_wf(x+h,y+k1);y=y+0.5*k1+0.5*k2x=x+h;z=ouleij_q(x)t=y-zendz = 4,z = 3.7000,y = -0.6150z = 1.4329, z =1.4329, t = -2.0479 z =3.7150, z =3.4435, y = -0.2571 z =1.5012, z =1.5012, t =-1.7583 z =3.4571, z = 3.2114, y =0.0763 z =1.5725, z =1.5725, t =-1.4962 z =3.2237, z = 3.0013, y =0.3876 z =1.6466, z =1.6466, t =-1.2590 z =3.0124,z =2.8112,y =0.6788z =1.7231,z =1.7231,t =-1.0444 z =2.8212,z = 2.6391,y =0.9518 z =1.8019,z =1.8019,t =-0.8501z = 2.6482,z =2.4834,y =1.2084z =1.8827,z =1.8827, t =-0.6743z =2.4916,z =2.3425, y =1.4501z =1.9653,z =1.9653, t =-0.5152实验结果的分析与研究1.对于欧拉法,步长越小,精度越高,而产生的误差越小。
一、封面标题:常州市大学生实习报告姓名:[您的姓名]学号:[您的学号]专业:[您的专业]实习单位:[实习单位名称]实习时间:[实习开始时间]至[实习结束时间]指导老师:[指导老师姓名]二、目录1. 实习概述2. 实习单位简介3. 实习内容与过程4. 实习收获与体会5. 实习中存在的问题及改进措施6. 总结与展望三、实习概述1. 实习背景随着我国高等教育的发展,实践教学环节越来越受到重视。
为了提高学生的综合素质和实际操作能力,学校组织了本次实习活动。
通过实习,使学生能够将所学理论知识与实际工作相结合,为今后的就业打下坚实基础。
2. 实习目的(1)提高自己的实际操作能力,将所学理论知识运用到实际工作中。
(2)了解行业现状,为今后的职业规划提供参考。
(3)培养自己的团队协作精神和沟通能力。
四、实习单位简介1. 单位名称:[实习单位名称]2. 单位性质:[单位性质,如国有企业、民营企业等]3. 单位简介:[实习单位的基本情况,包括主营业务、规模、发展历程等]五、实习内容与过程1. 实习岗位[实习岗位名称]2. 实习内容(1)[具体工作内容1](2)[具体工作内容2](3)[具体工作内容3]3. 实习过程(1)[实习初期,主要工作内容和学习过程](2)[实习中期,工作内容和技能提升过程](3)[实习后期,独立完成工作任务和总结经验过程]六、实习收获与体会1. 实际操作能力的提升通过实习,我对[实习岗位名称]的实际操作有了更深入的了解,掌握了[具体技能名称]等实用技能。
2. 行业认知的提高实习过程中,我了解了[实习单位所在行业]的现状和发展趋势,为今后的职业规划提供了有益参考。
3. 团队协作与沟通能力的培养在实习过程中,我学会了与同事、领导、客户等各方进行有效沟通,提高了自己的团队协作能力。
4. 自我管理能力的提升实习期间,我学会了如何合理安排时间,提高工作效率,培养了自己的自我管理能力。
七、实习中存在的问题及改进措施1. 存在问题(1)[问题1](2)[问题2]2. 改进措施(1)[针对问题1的改进措施](2)[针对问题2的改进措施]八、总结与展望1. 总结本次实习让我受益匪浅,不仅提高了自己的实际操作能力和行业认知,还培养了自己的团队协作和沟通能力。
第1章 引 言1.1 课程设计的意义高等学校的实践教学一般包括课程实验、综合性设计(课程设计)、课外科技活动、社会实践、毕业设计等,基本上可以分为三个层次:第一,紧扣课堂教学内容,以掌握和巩固课程教学内容为主的课程实验和综合性设计; 第二,以社会体验和科学研究体验为主的社会实践和课外科技活动; 第三,以综合应用专业知识和全面检验专业知识应用能力的毕业设计。
课程实践(含课程实验和课程设计)是大学教育中最重要也最基础的实践环节,直接影响后继课程的学习以及后继实践的质量。
由于课程设计是以培养学生的系统设计与分析能力为目标,通过团队式合作、研究式分析、工程化设计完成较大型系统或软件的设计题目的,因此课程设计不仅有利于学生巩固、提高和融合所学的专业课程知识,更重的是能够培养学生多方面的能力,如综合设计能力、动手能力、文献检索能力、团队合作能力、工程化能力、研究性学习能力、创新能力等。
《常微分方程课程设计》(Curriculum Design of the Ordinary Differential Equations )是一门继《数学实验》和《常微分方程》(ODE )之后开设的实验性课程,主要是指导性的讲解方程求解的数值方法和软件编程(如MATLAB ,MATHMATIC ,FORTRAN 等)并实现方程的解析解与数值解可视化分析的一个集中实践教学环节。
其宗旨在于培养学生运用计算机分析求解方程的能力,了解通过数学模型去解决实际问题的全过程,提高常微分方程课堂教学后的理解和应用效果,同时激发和提高同学们对于具有工程背景的科学研究的热情。
课程设计不仅仅是以实现相应的程序为目标,更重要的是在完成课程设计的过程中逐步培养今后遇到问题而去解决问题的能力,培养从事计算机应用开发所需要的各种能力与素质。
因此,在课程设计实施中,不仅需要完成程序并进行测试,还需要撰写相应的课程设计报告。
课程设计报告不仅是对课程设计的总结,也是对软件文档写作能力的初步训练。
数学与信息科学系实训报告常微分方程初值问题数值解法及其MATLAB实现姓名:学号:专业:信息与计算科学年级:2010级指导教师:朱耀生完成时间:2013年11月25—2013年12月6实验目的:(1)研究满足给定方程的可微函数的数值方法(2)培养matlab编程和上机调试能力实验基本原理和内容:根据给定的初始条件,确定常微分方程惟一解的问题叫常微分方程初值问题。
大多数实际问题难以求得解析解,必须将微分问题离散化,用数值方法求其近似解。
一阶常微分方程的初值问题的提法是,求出函数,使满足条件(1)利用数值方法解问题(1)时,通常假定解存在且惟一,解函数及右端函数具有所需的光滑程度。
数值解法的基本思想是:先取自变量一系列离散点,把微分问题(1)离散化,求出离散问题的数值解,并以此作为微分问题解的近似。
例如取步长>0,以剖分区间[,],令=+,把微分方程离散化成一个差分方程。
以()表微分方程初值问题的解,以表差分问题的解,就是近似解的误差,称为全局误差。
因此,设计各种离散化模型,求出近似解,估计误差以及研究数值方法的稳定性和收敛性等构成了数值解法的基本内容1.欧拉法和后退欧拉法原理:function [x,y]=meuler(df,xspan,y0,h)%用途:改进欧拉公式解常微分方程y'=f(x,y), y(x0)=y0%格式:[xy]=meuler(df,a,b,y0,h) df为函数f(x,y), xspan为求解%区间[x0,xn], y0为初值y(x0), h为步长, [xy]返回节点和数值解矩阵x=xspan(1):h:xspan(2); y(1)=y0;for n=1:(length(x)-1)k1=feval(df,x(n),y(n));y(n+1)=y(n)+h*k1;k2=feval(df,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2;end例题给定的初值问题y′=-y+x+2,0=<x=<1Y(0)=-1,取精确解y(x)=exp(-x)+x后退欧拉法,步长h=0.003, h=0.1求在节点k=1+0.1k (k=1,2,3……10)处的数值解若>>h=0.1;y=-1;x=1;for i=1:20k1=h*oulei_wf(x,y);k2=h*oulei_wf(x+h,y+k1);y=y+0.5*k1+0.5*k2x=x+h;z=ouleij_q(x)t=y-zendz = 4,z = 3.7000,y = -0.6150z = 1.4329, z =1.4329, t = -2.0479 z =3.7150, z =3.4435, y = -0.2571 z =1.5012, z =1.5012, t =-1.7583 z =3.4571, z = 3.2114, y =0.0763 z =1.5725, z =1.5725, t =-1.4962 z =3.2237, z = 3.0013, y =0.3876 z =1.6466, z =1.6466, t =-1.2590 z =3.0124,z =2.8112,y =0.6788z =1.7231,z =1.7231,t =-1.0444 z =2.8212,z = 2.6391,y =0.9518 z =1.8019,z =1.8019,t =-0.8501z = 2.6482,z =2.4834,y =1.2084z =1.8827,z =1.8827, t =-0.6743z =2.4916,z =2.3425, y =1.4501z =1.9653,z =1.9653, t =-0.5152实验结果的分析与研究1.对于欧拉法,步长越小,精度越高,而产生的误差越小。
实验四种群数量的状态转移——微分方程一、实验目的及意义[1] 归纳和学习求解常微分方程(组)的基本原理和方法;[2] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;[3] 熟悉MATLAB软件关于微分方程求解的各种命令;[4] 通过范例学习建立微分方程方面的数学模型以及求解全过程;通过该实验的学习,使学生掌握微分方程(组)求解方法(解析法、欧拉法、梯度法、改进欧拉法等),对常微分方程的数值解法有一个初步了解,同时学会使用MATLAB软件求解微分方程的基本命令,学会建立微分方程方面的数学模型。
这对于学生深入理解微分、积分的数学概念,掌握数学的分析思维方法,熟悉处理大量的工程计算问题的方法是十分必要的。
二、实验内容1.微分方程及方程组的解析求解法;2.微分方程及方程组的数值求解法——欧拉、欧拉改进算法;3.直接使用MATLAB命令对微分方程(组)进行求解(包括解析解、数值解);4.利用图形对解的特征作定性分析;5.建立微分方程方面的数学模型,并了解建立数学模型的全过程。
三、实验步骤1.开启软件平台——MATLAB,开启MATLAB编辑窗口;2.根据微分方程求解步骤编写M文件3.保存文件并运行;4.观察运行结果(数值或图形);5.根据观察到的结果和体会写出实验报告。
四、实验要求与任务根据实验内容和步骤,完成以下实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论)基础实验1.求微分方程的解析解, 并画出它们的图形,y’= y + 2x, y(0) = 1, 0<x<1;y’’+y cos(x) = 0, y(0)=1, y’(0)=0;2.用向前欧拉公式和改进的欧拉公式求方程y’=y - 2x/y, y(0) = 1 (0≤x≤1,h =0.1) 的数值解,要求编写程序,并比较两种方法的计算结果,说明了什么问题?3.Rossler 微分方程组:当固定参数b=2, c=4时,试讨论随参数a 由小到大变化(如a ∈(0,0.65))而方程解的变化情况,并且画出空间曲线图形,观察空间曲线是否形成混沌状?4.Apollo 卫星的运动轨迹的绘制应用实验 5.盐水的混合问题一个圆柱形的容器,内装350升的均匀混合的盐水溶液。
常微分方程课程实习指导书(10级信息与计算科学)(10级数学与应用科学)福建农林大学计算机与信息学院目录1.引言 (1)2.欧拉(Euler方法) (2)2.1.欧拉格式 (2)2.2.收敛性研究简介 (3)2.3.稳定性的研究简介 (4)3.梯形法、隐式格式的迭代运算 (5)4.一般单步法、Runge-Kutta格式 (7)4.1.一种构造单步法的方法——泰勒级数法 (7)4.2.一般单步法基本理论 (8)4.3.龙格—库塔格式 (9)1.引言2010年10月16日福建省首届数学大会在福建会堂召开,会上林群院士对数学教育给出了精辟的见解:现代数学教育=微积分概念+计算方法,就是建立微分方程,然后求解微分方程。
就是建模和解模两件事!建模的基础是微积分知识。
而由于微分方程求解析解的困难,基于计算机的数值计算方法就成为解模的主要手段。
而微积分知识又归结为求导公式和求积公式这两个公式。
这是此次大会于我的最大收获!正切合了此次常微分方程课程实习的指导思想!在常微分方程课程中,我们学习了几类可求解的常微分方程(组)的解法及其相关理论基础。
但是我们更知道,更多的常微分方程是不能用初等方法求解的。
然而在科学技术、工程应用等领域,常微分方程是经常遇到的主要数学模型。
一般来说,找出解的解析表达式极其困难,对大部分问题甚至是不可能的。
因此,寻求近似解法就非常必要,而微分方程数值解法是目前普遍采用的微分方程近似解法。
本实习指导书即给出常微分方程数值解法:利用计算机依托数学软件(如MATLAB )求常微分方程的近似解,即给出理论解在一些离散点上的近似值。
本实习指导书中讨论的是常微分方程的初值问题00(,)()dyf x y dxy x y⎧=⎪⎨⎪=⎩)2()1(如无特别说明,总认为这个初值问题的解是适定的,即解存在、唯一且连续依赖于初始条件。
要求理解求微分方程初值问题的数值解方法,包括欧拉方法和改进的欧拉方法及龙格-库塔方法。
能应用欧拉方法和龙格-库塔方法求微分方程的初值问题的数值解并画出图形。
2.欧拉(Euler 方法)2.1.欧拉格式数值求解常微分方程的初值问题的最简单的方法是(向前)欧拉法(Euler )。
该方法的理论推导如下:由),(y x f dxdy=,两边在],[00h x x +上同时积分得:00()()(,())x h x y x h y x f x y x dx++-=⎰而求⎰+hx x dxy x f 00),(的近似值的最直接的方法是用),(00y x f 代替),(y x f (即定积分近似计算中的用矩形近似曲边梯形),于是有,()()(0000y x hf x y h x y ≈-+用0y 表示)(0x y ,1y 近似代替h x x h x y +=+010),(,则 ),(0001y x hf y y +=依此令101,+++=n n y nh x x 近似代替)(1+n x y ,则⎩⎨⎧==+=+)(2,1,0),(001x y y n y x hf y y n n n n(3)这就是欧拉法的计算公式,n x x h -=+1称为步长。
一般而言,并不要求步长相等,则有),()(11n n n n n n y x f x x y y -+=++ (4)例1 以1.0=h 为步长,用欧拉法求初值问题⎪⎩⎪⎨⎧=-=-1)0(y y xe dx dy x的数值解,并与精确解xex x y )2(21)(2+=比较。
解:由欧拉法有⎩⎨⎧==-+=-+12,1,0)(01y n y e x h y y n x n n n n在使用欧拉法数值的求解过程中,我们发现计算过程非常简单,即由0y 可直接计算1y ,由1y 可直接计算 ,2y ,无需用迭代方法求解任何方程,因此也称为显式格式。
一般而言,我们难以得到精确解)(n x y ,用欧拉法数值求得的近似解n y ,误差为|)(|n n x y y -;另一方面,不论何种格式都不能利用计算机求得它们的精确解n y ,这是因为计算机运算,总是有限位二进制运算,因此对十进制的数学运算总会出现舍入误差及其在计算过程的传递。
因此计算机输出的是欧拉法的近似解ny ~,而不是精确解n y 。
由于))(()~()(~n n n n n n x y y y y x y y -+-=- (5)可见,为了使计算得出的解ny ~是)(n x y 好的近似。
我们要求欧拉法的精确解n y 是微分方程精确解)(n x y 的很好近似,特别要求当步长h 充分小时,所得的近似解n y 能足够精确地逼近精确解)(n x y 。
换言之,要求0→h 时,).(n n x y y →ny ~是n y 好的近似。
由于计算机在计算过程会不断地产生舍入误差,本问题的讨论相当复杂。
为了简化讨论,我们设想计算机对欧拉格式计算过程完全精确,每步都没有误差,因此|~|n n y y -的值完全由|~|00y y -决定。
要求ny ~是n y 的好的近似则相当于要求欧拉格式解对初始值具有连续依赖性,这种解对初值的连续依赖性就称为稳定性。
问题(1)称为格式的收敛性问题。
问题(2)称为格式的稳定性问题。
格式的收敛性、稳定性研究微分方程数值解法最基本的理论研究工作,具有重要的实用意义。
一个算法格式只有当它是稳定的、收敛的,才是能用的、有意义的。
2.2.收敛性研究简介前面已指出,收敛性问题,即研究)(,00x y ,yx nh x h n→→+→时的问题。
记111)(+++-=n n n y x y ε为欧拉方法的整体截断误差,而由)(n x y 利用欧拉公式得到的1+*n y与)(1+n x y 之差=+1n e |)(|11++*-n n x y y称为局部截断误差,也可记为n R 。
定理1 假定],[)(02X x C x y y ∈=,则欧拉方法的局部截断误差n R 满足221||MhR n ≤其中h 为步长,|)(|m ax 0x y M Xx x ''=≤≤。
定理2 设),(y x f 关于y 满足Lipschitz 条件,L 为相应的Lipschitz 常数,则欧拉方法的整体截断误差n ε满足)1(||||)(0)(00-+≤--Lx X Lx X n ehLR eεε其中R 为局部截断误差的上界。
定理 3 设),(y x f 关于y 满足Lipschitz 条件,L 为相应的Lipschitz 常数,],[)(02X x C x y y ∈=且当0→h 时,)(00x y y →,则欧拉方法的解n y 一致收敛到初值问题的解)(n x y ,并有估计式整体截断误差n ε满足)1(||||)(0)(00-+≤--Lx X Lx X n ehLR eεε其中R 为局部截断误差的上界。
)1(2||||)(0)(00-+≤--Lx X Lx X n eLMh eεε如果)(00x y y =,即 欧拉方法的整体截断误差nε与h 同阶,由n R 的表达式可知,)(2h o R n =,这说明局部截断误差比整体截断误差高一阶。
我们称欧拉方法一阶格式。
2.3.稳定性的研究简介稳定性问题是决定欧拉法在利用计算机计算中能否得到精确解的关键性问题,只有稳定的算法才可能是有用的算法。
定义1 如果存在正整数c 及0h ,使对任意初始值,,00z y 用⎩⎨⎧+=+01),(y y x hf y y n n n n与⎩⎨⎧+=+01),(z z x hf z z n n n n计算所得之解n n z y ,满足估计式000;0|,|||x X nh h h z y c z y n n -≤<<-≤-则称欧拉法是稳定的。
注意,这里分别是以00,z y 为初值得到的精确值,毫无舍入误差,因此这里的稳定性定义是对初值的稳定性,即研究初值误差在计算过程的传递问题。
定理4 在定理2的条件下,欧拉方法是稳定的。
由定理2,我们看到初始误差00=ε,则整体截断误差的阶完全由局部截断误差的阶所决定。
因此要提高数值算法的精度,往往从提高局部截断误差的阶入手,这也是构造高精度数值方法的主要依据。
3.梯形法、隐式格式的迭代运算用梯形公式近似计算积分,则))](,())(,([2)(),()()(11111+++++-≈=-⎰+n n n n x x n n n n x y x f x y x f x x dx y x f x y x y n n因此有))](,())(,()[(21)()(1111+++++-+≈n n n n n n n n x y x f x y x f x x x y x y可得梯形公式为)],(),()[(211111+++++-+=n n n n n n n n y x f y x f x x y y显然这是一个隐式格式。
它的局部截断误差阶为)(3h o ,较之欧拉法高一阶。
类似于欧拉法,对梯形法可以平行地建立它的整体截断误差阶为)(2h o ,以及格式的收敛性稳定性等定理。
梯形法是一个隐式格式)],(),([21111+++++=n n n n n n y x f y x f h y y如何求解1+n y 呢?我们采用迭代法,其格式如下:(1)()111(0)11[(,)(,)]2—p p n nn n n n n y y h f x y f x y y +++++⎧=++⎪⎨⎪⎩初始猜测 易证梯形法迭代格式收敛的充分条件是12<hL。
在实际计算中,令0=p 有下面的预报-校正格式⎪⎩⎪⎨⎧++=+=++++校正格式预报格式——)],(),([21——),()0(111)0(1n n n n n n n n n n y x f y x f h y y y x hf y y当然也可以迭代多次:⎪⎩⎪⎨⎧++=+=+++++校正格式预报格式——)],(),([21——),()(11)1(1)0(1p n n n n n p n n n n n y x f y x f h y y y x hf y y当步长取得适当小,用预报格式已能算出比较好的近似值,故迭代收敛很快,通常只需迭代两三次就可以满足精度要求,如果迭代多次仍不收敛,说明步长过大,必须减小步长,再进行计算。
梯形法较之欧拉法提高了精度,但增加了迭代次数,因此增加了计算工作量。
例2 用预报-校正格式解初值问题⎩⎨⎧=∈++-='=1|]1,0[10x y x x y y 取1.0=h 。
解:预报-校正格式为⎪⎩⎪⎨⎧++-+++-+=++-+=++++)]1()1[(21)1(1)0(11)0(1n n n n n n n n n n x y x y h y y x y h y y也可以写成⎪⎪⎩⎪⎪⎨⎧+++--=++-=++=++9,,3,2,1,0)1(1.0)1(1.0)(211121211 n x k y k x y k k k y y n n n n n n与欧拉格式的结果比较,可以看出,欧拉法精确度较低,预报-校正格式精确度有所改善。