数学实验课程设计常微分方程数值解
- 格式:doc
- 大小:29.94 KB
- 文档页数:5
常微分方程的数值解法专业班级:信息软件 姓名:吴中原 学号:120108010002 一、实验目的1、熟悉各种初值问题的算法,编出算法程序;2、明确各种算法的精度与所选步长有密切关系;通过计算更加了解各种 算法的优越性。
二、实验题目1、根据初值问题数值算法,分别选择二个初值问题编程计算;2、试分别取不同步长,考察某节点j x处数值解的误差变化情况; 3、试用不同算法求解某初值问题,结果有何异常; 4、分析各个算法的优缺点。
三、实验原理与理论基础(一) 欧拉法算法设计对常微分方程初始问题(6-1)(6-2)用数值方法求解时,我们总是认为(6-1)、(6-2)的解存在且唯一。
欧拉法是解初值问题的最简单的数值方法。
从(6-2)式由于y (x 0) = y 0已给定,因而可以算出),()('000y x f x y =。
设x 1 = h 充分小,则近似地有:),()(')()(00001y x f x y hx y x y =≈-(6-3)记 ,n ,,i x y y i i 10 )(== 从而我们可以取),(0001y x hf y y ==作为)(1x y 的近似值。
利用1y 及f (x 1, y 1)又可以算出)(2x y 的近似值:),(1112y x hf y y +=一般地,在任意点()h n x n 11+=+处)(x y 的近似值由下式给出),(1n n n n y x hf y y +=+(6-4)这就是欧拉法的计算公式,h 称为步长。
⎪⎩⎪⎨⎧==)( ),(d d 00y x y y x f x y(二)四阶龙格-库塔法算法设计:欧拉公式可以改写为:()111,i i i i y y k k hf x y +=+⎧⎪⎨=⎪⎩,它每一步计算(),f x y 的值一次,截断误差为()2o h 。
改进的欧拉公式可以改写为:()()()11212112,,i i i i i i y y k k k hf x y k hf x h y k +⎧=++⎪⎪=⎨⎪=++⎪⎩,它每一步要计算(),f x y 的值两次,截断误差为()3o h 。
实验报告实验项目名称常微分方程的数值解法实验室数学实验室所属课程名称微分方程数值解实验类型上机实验实验日期2013年3月11日班级10信息与计算科学学号2010119421姓名叶达伟成绩实验概述:【实验目的及要求】运用不同的数值解法来求解具体问题,并通过具体实例来分析比较各种常微分方程的数值解法的精度,为以后求解一般的常微分方程起到借鉴意义。
【实验原理】各种常微分方程的数值解法的原理,包括Euler法,改进Euler法,梯形法,Runge-Kutta方法,线性多步方法等。
【实验环境】(使用的软硬件)Matlab软件实验内容:【实验方案设计】我们分别运用Euler法,改进Euler法,RK方法和Adams隐式方法对同一问题进行求解,将数值解和解析解画在同一图像中,比较数值解的精度大小,得出结论。
【实验过程】(实验步骤、记录、数据、分析)我们首先来回顾一下原题:对于给定初值问题:1. 求出其解析解并用Matlab画出其图形;2. 采用Euler法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;3. 采用改进Euler法求解(2.16),步长取为0.5;4. 采用四级Runge-Kutta法求解(2.16),步长取为0.5;5. 采用Adams四阶隐格式计算(2.16),初值可由四级Runge-Kutta格式确定。
下面,我们分五个步骤来完成这个问题:步骤一,求出(2.16)式的解析解并用Matlab 画出其图形; ,用Matlab 做出函数在上的图像,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015y=exp(1/3 t 3-1.2t)exact solution图一 初值问题的解析解的图像步骤二,采用Euler 法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;我们采用Euler 法取步长为0.5和0.25数值求解,并且将数值解与解析解在一个图中呈现,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Numerical solution of Euler and exact solutionexact solution h=0.5h=0.25图二 Euler 方法的计算结果与解析解的比较从图像中不难看出,采用Euler 法取步长为0.5和0.25数值求解的误差不尽相同,也就是两种方法的计算精度不同,不妨将两者的绝对误差作图,可以使两种方法的精度更加直观化,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Absolute error of numerical solution and exact solutionh=0.5h=0.25图三 不同步长的Euler 法的计算结果与解析解的绝对误差的比较 从图像中我们不难看出,步长为0.25的Euler 法比步长为0.5的Euler 法的精度更高。
实验4 常微分方程数值解分1 黄浩 43一、实验目的1.掌握用MATLAB软件求微分方程初值问题数值解的方法;2.通过实例学习用微分方程模型解决简化的实际问题;3.了解欧拉方法和龙格-库塔方法的基本思想和计算公式,及稳定性等概念。
二、实验内容1.《数学实验》第一版(问题2)问题叙述:小型火箭初始重量为1400kg,其中包括1080kg燃料。
火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃烧用尽时关闭。
设火箭上升时空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。
模型转换及实验过程:(一)从发射到引擎关闭设火箭总质量为m,上升高度为h,瞬时速度为v,瞬时加速度为a,由燃料燃烧时间t=60s,可列如下的方程组:t∈[0,60]−9.8因此,上述方程为二元常微分方程组,选择t为自变量,h和v为因变量进行分析。
初值条件:h(0)=0 ,v(0)=0对上述模型,使用ode45()函数求数值解(程序见四.1、四.2),结果如下:由上表可知,引擎关闭瞬间,火箭的高度为12189.78m,速度为267.26m/s,加速度为0.9170m/s2,火箭至此已飞行60s而高度、速度、加速度随时间的变化曲线如下:(二)从引擎关闭到最高点设引擎关闭时,t1=0,由上一问的结果可知,h(0)=12189.78m,v(0)= 267.26m/s,m=320kg,则可列二元常微分方程组如下:9.8因此,可选择t1为自变量,h、v为因变量进行分析(程序见四.3、四.4),实验结果如下:由上表可知,当t1∈[11,12]时,v(t1)有零点,即该区间内某时刻火箭达到最高点。
再进行更细致的实验(程序略),设步长为0.01,观察该区间内v(t1)的零点,如下表所示:可以看出,当t1=11.30s,即总时间t=71.30s时,火箭达到最高点,高度为13115.36m,加速度为-9.8m/s2。
实验七 常微分方程数值解法实验目的1、 掌握常微分方程数值解法中欧拉法和改进欧拉法的基本原理和算法;2、 培养Matlab 数学软件的编程与上机调试能力.实验课时4课时实验准备 初值问题()(),,dyf x y a x bdxy a η⎧=≤≤⎪⎨⎪=⎩的解析解法在常微分方程中有介绍,但是实际中遇到的常微分方程一般很难得到解析解,所以我们一般用数值方法求出它的数值解. 数值解法的结果是自变量x 在一系列离散点,,21n x x x <<处的函数()x f 的近似值 ,,,,21n y y y ,一般情况下取步长n n x x h -=+1为定数.1.欧拉法利用一阶微分公式()()1nn n x x y x y x dy dxh+=-≈可得差分方程()1,,0,1,...,1n n n n y y hf x y n N +=+=-其中, 0y η=, ()n n y y x ≈,则得到初值问题的数值解.2.后退欧拉法利用一阶微分公式()()11n n n x x y x y x dy dxh++=-≈可得差分方程()1110,,0,1,...,1n n n n y y hf x y n N y η+++=+=-⎧⎪⎨=⎪⎩ 此为后退欧拉法.4. 梯形求积公式利用数值积分()()()()()()()1111,,,2n nx n n n n n n x h y x y x f x y dx f x y x f x y x ++++⎡⎤-=≈+⎣⎦⎰可得梯形公式()()1110,,,0,1,...,12n n n n n n h y y f x y f x y n N y η+++⎧=++=-⎡⎤⎪⎣⎦⎨⎪=⎩5. 改进欧拉公式一般来讲,隐式格式要比显示格式具有较好的数值稳定性,所以常常被采用,但是为了避免隐式格式的计算量,一般采用预估-校正的方法.对于梯形公式,用欧拉公式预估再用梯形公式校正,可得改进欧拉公式:()()()()01111,,,2n n n n n n n n n n y y hf x y hy y f x y f x y ++++⎧=+⎪⎨=++⎡⎤⎪⎣⎦⎩实验算例1. 欧拉法利用matlab 中的一个循环语句即可实现欧拉法中的利用第一个节点计算随后所有节点例1. 用欧拉法求解初值问题, 并画出解图形.()1,0101y y x x y '=-++≤≤⎧⎪⎨=⎪⎩ >>输出图像为另外,还可以改变输入的参数n,加密节点,得到更精确的数值解.对于例1的结果为输出图像为欧拉法和改进欧拉法的效果比较图为实验习题1. 利用欧拉法程序,求解初值问题(注意:若理论解未知,解曲线画不出来,应删掉相关程序语句)(1)()2sin ,1211y y y x x y '⎧=--≤≤⎪⎨=⎪⎩ (2)(),0101yy xe x y '⎧=≤≤⎪⎨=⎪⎩ 并将欧拉法求出的折线和改进欧拉法求出的折线放在同一个图中,比较效果。
数学实验报告1.题目:某容器盛满水后,底端直径为d0的小孔开启(如图1),根据水力学知识,当水面高度为h时,谁从小孔中流出的速度为v=0.6*(g*h)^0.5(其中g为重力加速度,0.6问哦小孔收缩系数)1)若容器为倒圆锥形(如图1),现测得容器高和上底直径都为1.2m,小孔直径d为3cm,为水从小孔中流完需要多少时间;2min时水面高度是多少。
2)若容器为倒葫芦形(如图2),现测得容器高1.2m,小孔直径d为3cm,由底端(记x=0)向上每隔0.1m测出容器的直径D(m)如表1所示,问水从小孔中流完需要多少时间;2min时水面高度是多少。
X/m00.10.20.30.40.50.60.70.80.9 1.0 1.1 1.2D/m0.030.050.080.140.190.330.450.680.981.11.21.131.02.分析:由题知,水从小孔中流出,不仅与容器有关,还与水流速度v=0.6*(2*g*h)^0.5有关。
第一小题容器是圆锥形,比较规则,但是由于水不断从小孔流出,容器中水的高度是不断变化的,水流速度没有一定的公式,所以要用到微积分解决。
由(1)知,水面直径等于水深。
水深为h时,流量为0.6(π/4)d^2*(gh)^0.5,0.6*(g*h)^(0.5)*π*(d0/2)^2*dt=π/4*h^2*dh则水深下降dh 所需时间 :dt=-[(π/4)h^2*dh]/[0.6(π/4)d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5]水深由1.2m 至0定积分得水从小孔流完的时间:T (其中已知d=0.03m ,g=9.8m*s(-2)对于第二问:设两分钟(120S )后水深为X m ,由dt=-[(π/4)h^2*dh]/[0.6*(π/4)*d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5]则263.93-120 =X^2.5/[1.5*d^2*(g)^0.5]以d=0.03m ,g=9.8m*s(-2代入上式得 水深:X第二小题容器为倒葫芦形,比较不规则,比较复杂,不仅要考虑水不断从小孔流出,容器中水的高度是不断变化的,水流速度没有一定的公式,所以要用到微积分解决,还要注意表1的倒葫芦形的不断变化,水深的高度变化是不规则的但仍可以用微积分。
浙江大学城市学院实验报告课程名称数值计算方法实验项目名称常微分方程初值问题的数值解法 实验成绩指导老师签名日期2015/12/16 一.实验目的和要求1. 用Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法; 2. 通过实例学习用微分方程模型解决简化的实际问题;二.实验内容和原理编程题2-1要求写出Matlab 源程序m 文件,并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上; 2-1 编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 2-2 分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度; 2-3 分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法; 3龙格-库塔方法;2-4 分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较; MATLAB 相关函数求微分方程的解析解及其数值的代入dsolve‘egn1’,‘egn2’,‘x ’ subsexpr,{x,y,…},{x1,y1,…}其中‘egn i ’表示第i 个方程,‘x ’表示微分方程中的自变量,默认时自变量为t ; subs 命令中的expr 、x 、y 为符合型表达式,x 、y 分别用数值x1、x2代入; >>symsxyz>>subs'x+y+z',{x,y,z},{1,2,3} ans= 6>>symsx>>subs'x^2',x,2 ans= 4>>s=dsolve‘12Dy y ∧=+’,‘(0)1y =’,‘x ’ ans= >>symsx >>subss,x,2 ans=右端函数(,)f x y 的自动生成f=inline ‘expr ’,’var1’,‘var2’,……其中’expr ’表示函数的表达式,’var1’,‘var2’表示函数表达式中的变量,运行该函数,生成一个新的函数表达式为fvar1,var2,……; >>f=inline'x+3y','x','y' f=Inlinefunction: fx,y=x+3y >>f2,3 ans= 114,5阶龙格-库塔方法求解微分方程数值解t,x=ode45f,ts,x0,options其中f 是由待解方程写成的m 文件名;x0为函数的初值;t,x 分别为输出的自变量和函数值列向量,t的步长是程序根据误差限自动选定的;若ts=t0,t1,t2,…,tf,则输出在自变量指定值,等步长时用ts=t0:k:tf,输出在等分点;options 用于设定误差限可以缺省,缺省时设定为相对误差310-,绝对误差610-,程序为:options=odeset ‘reltol ’,rt,’abstol ’,at,这里rt,at 分别为设定的相对误差和绝对误差;常用选项见下表;选项名 功能 可选值 省缺值 AbsTol 设定绝对误差正数 RelTol 设定相对误差 正数InitialStep 设定初始步长 正数 自动 MaxStep设定步长上界正数MaxOrder 设定ode15s 的最高阶数 1,2,3,4,5 5 Stats 显示计算成本统计 on,off off BDF 设定ode15s 是否用反向差分on,offoff例:在命令窗口执行>>odefun =inline ‘2*y t y -’,‘t ’,‘y ’;>>[],45(,[0,4],1)t y ode odefun =;ans=>>t y ‘o-’,%解函数图形表示>>45(,[0,4],1)ode odefun %不用输出变量,则直接输出图形 >>[],45(,0:4,1)t y ode odefun =;[],t yans=三.操作方法与实验步骤包括实验数据记录和处理2-1编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1Euler 法y=eulera,b,n,y0,f,f1,b1 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; yi+1=yi+hfxi,yi; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; for i=1:100y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解'改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 %求微分方程的数值解 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; T1=fxi,yi; T2=fxi+1,yi+hT1; yi+1=yi+h/2T1+T2; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; fori=1:100 y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解' 2-2分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度;1向前欧拉法>>euler0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8(2)改进欧拉法>>eulerpro0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8改进欧拉法的精度比向前欧拉法更高; 2-3分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法;2-4分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较;1>>euler0,50,50,,inline'','t','p','Dp=','p0= 1' ans= 精确解为 s=1-99/100expx/500 ans=Columns1through82>>dsolve'Dp=','p0=','t' ans=1-99/100expt/500 >>1-99/100exp ans=与欧拉法求得的精确值差0,0001四.实验结果与分析。
数学实验报告
1.题目:
某容器盛满水后,底端直径为d0的小孔开启(如图1),根据水力学知识,当水面高度为h时,谁从小孔中流出的速度为v=0.6*(g*h)^0.5(其中g为重力加速度,0.6问哦小孔收缩系数)
1)若容器为倒圆锥形(如图1),现测得容器高和上底直径都为1.2m,小孔直径d为3cm,为水从小孔中流完需要多少时间;2min时水面高度是多少。
2)若容器为倒葫芦形(如图2),现测得容器高1.2m,小孔直径d为3cm,由底端(记x=0)向上每隔0.1m测出容器的直径D(m)如表1所示,问水从小孔中流完需要多少时间;2min时水面高度是多少。
1
表
分析:2.由题知,水从小孔中流出,不仅与容器有关,还与水流速度v=0.6*(2*g*h)^0.5有关。
第一小题容器是圆锥形,比较规则,但是由于水不断从小孔流出,容器中水的高度是不断变化的,水流速度没有一定的公式,所以要用到微积分解决。
由(1)知,水面直径等于水深。
水深为h时,流量为0.6(π/4)d^2*(gh)^0.5,
/4*h^2*dh
π*(d0/2)^2*dt=π0.6*(g*h)^(0.5)*
则水深下降dh所需时间:dt=-[(π/4)h^2*dh]/[0.6(π
/4)d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5]
水深由1.2m至0定积分得水从小孔流完的时间:T(其中已知d=0.03m,
g=9.8m*s(-2)
对于第二问:设两分钟(120S)后水深为X m ,由
dt=-[(π/4)h^2*dh]/[0.6*(π/4)*d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5] 则263.93-120 =X^2.5/[1.5*d^2*(g)^0.5]
以d=0.03m,g=9.8m*s(-2代入上式得水深:X
第二小题容器为倒葫芦形,比较不规则,比较复杂,不仅要考虑水不断从小孔流出,容器中水的高度是不断变化的,水流速度没有一定的公式,所以要用到微积分解决,还要注意表1的倒葫芦形的不断变化,水深的高度变化是不规则的但仍可以用微积分。
由(2)知容器高1.2m,水深为h时,流量为0.6(π/4)d^2*(gh)^0.5,由于不同高度,倒葫芦形半径不同,用欧拉方程和龙格—库塔方法则水深下降dh所需时间:dt=t(k+1)-t(k)=-[(π/4)h^2*dh]/[0.6(π
/4)d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5]
然后利用循环for k=1:length(L),t(k)=((h(k+1)-h(k))*(π/4)*d(k)^2)/(0.6*(π
/4)*d^2*(g(1.2-h(k)))^0.5),T=sum(t).可以求得水从小孔流完的总时间。
对于第二问:设两分钟(120S)后水深为X m ,由
S=0,利用条件,当120-s<0.0001时s=s+t(k),x(k)
把d=0.03m,g=9.8m*s(-2)代入上式得水深:X
相关资料:龙格—库塔方法求解
龙格—库塔方法思想:用[v,v]上若干个点的倒数,对他们做线性组合得到n1n?平均斜率,就可能得到更高阶的精度,这就是龙格—库塔方法思想。
为了演算方便本课程设计采用二阶龙格—库塔公式,即求[v,v]上的二n1n?个倒数,将他们加权平均得平均斜率。
??(v)?f(v,Hh) 我们设有形如:H)v?H(00f(h,v)满足HipscHitz其中函数条件,既满足存在常数H使
f(v,H)?f(v,H)?LH?H2112??v?1??)l(0v去倒数作线性组合和按照下式在nn
??k)(k??HH?h?2n21n?11?k?f(h,v)?1nn??????,1?),y?(?kfvh,?hk0?21nn
(3)
???为待定系数,确定他们的准则是使(3)式有尽量高的精度。
注意到其中,,21
的假设,并对作二元泰勒展开,且利用)vH?H(k nn2???,(3)式可写为:
f,Hf*?Hk?H??f Hv1??k?();k?H(v)?hH2111n2n??;?H(v))?f(v,Hk n1n2?????)h?O(,H(v,H(v))?))hkff(v?)l,H(v?( hk)?Hv(v)?(hfvk?nh1nvnn1nnn22????)hO((H?v(v)?)hH?nn3???????于
是)(h)?v)hH)H?H(v?(??O)hH((v n1nn?12n2故得截断误差为
123???????)(h)H?O?)hH((v)?(?vh?)?TH(v?H(1?)n2n?n?111n?n1221?????,1??就可以使(3)式具有2 阶精度。
容易看出只要:2122
???时的龙格—库塔方以上分析了龙格—库塔方法思想,下面用1?1/2,??21上解决本课程设计题目:法即为改良后的欧拉公式法在MATHAB
模型方程:3..d=0.03m
g=9.8m*s(-2),h=1.2m,d0=1.2m,开始条件所需dhπ/4)d^2*(gh)^0.5,则
水深下降水深为h时,流量Q为0.6(
/4)d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5] πdt=-[(π/4)h^2*dh]/[0.6(时间:),g-9.8m/sT至0定积分得水从小孔流完的时间:(其中已知d=0.03m水深由1.2m X m ,由120S 设两分钟()后水深为
/4)*d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5] /4)h^2*dh]/[0.6*(πdt=-[(π
263.93-120 =X^2.5/[1.5*d^2*(g)^0.5]
则
X 水深:d=0.03,g=9.8代入上式得以
:所需时间dh 用欧拉方程和龙格—库塔方法则水深下降π
/4)h^2*dh]/[0.6(dt=t(k+1)-t(k)=-[(π/4)d^2*(gh)^0.5]=-[h^1.5*dh]/[0.6d^2*(g)^0.5]
k1=0.15*sqrt(g*(x(n)))*d^2/(-43.6359*x(n)^8+213.0457*x(n)^7-414.873*x(n)^6+41 0.2075*x(n)^5-218.8936*x(n)^4+62.553*x(n)^3-8.3215*x(n)^2+0.49619*x(n)+.0148 92)^2;
k2=0.15*sqrt(g*(x(n))-h*k1)*d^2/(-43.6359*(x(n)-h*k1)^8+213.0457*(x(n)-h*k1)^7
-414.873*(x(n)-h*k1)^6+410.2075*(x(n)-h*k1)^5-218.8936*(x(n)-h*k1)^4+62.553*(
x(n)-h*k1)^3-8.3215*(x(n)-h*k1)^2+0.49619*(x(n)-h*k1)+.014892)^2;
x(n+1)=x(n)-h*(k1+k2)/2;
4.编译程序:
(1)
g=9.8;
d=0.03;
syms h
y=-h^(1.5)/(0.6*d^2*sqrt(2*g));
T=int(y,h,1.2,0);
eval(T)
x=((T-120)*(1.5*d^2*sqrt(2*g)))^(0.4);
eval(x)
运行结果如下
>> sy1
ans =
263.9316
ans =
0.9416
(2)
clear;
g=9.8;
d=0.03;
k1=0;
k2=0;
h=0.4;
x(1)=1.2;
for n=1:1000
k1=0.15*sqrt(g*(x(n)))*d^2/(-43.6359*x(n)^8+213.0457*x(n)^7-414.873*x(n)^6+41.0.2075*x(n)^5-218.8936*x(n)^4+62.553*x(n)^3-8.3215*x(n)^2+0.49619*x(n)+.0148 92)^2;
k2=0.15*sqrt(g*(x(n))-h*k1)*d^2/(-43.6359*(x(n)-h*k1)^8+213.0457*(x(n)-h*k1)^7
-414.873*(x(n)-h*k1)^6+410.2075*(x(n)-h*k1)^5-218.8936*(x(n)-h*k1)^4+62.553*(
x(n)-h*k1)^3-8.3215*(x(n)-h*k1)^2+0.49619*(x(n)-h*k1)+.014892)^2;
x(n+1)=x(n)-h*(k1+k2)/2;
end
x(300)
t=0:h:1000*h;
plot(t,x);
axis([0,400,0,1.21]);
运行结果如下
>> sy2
ans =
1.0278
1.2
10.80.6400300350250500100150200点头绪0.94m2min263s水从小孔流完需要,时水面高度是总结:5.。