差分法欧拉格式浅谈
- 格式:doc
- 大小:148.00 KB
- 文档页数:5
第三章 有限差分法函数()f x ,x 为定义在区间[]a b ,上的连续变 量。
将区间[]a b ,等分成n 份,令()h b an =-称为 步长,x 在这些离散点处的取值为x a ih i =+ ()i n =01,,,Λ称为节点。
函数()f x 在这些节点处的差值()()()()()()f x h f x f x f x h f x h f x h i i i i i i +---+--⎧⎨⎪⎩⎪ (5-1) 分别称为一阶向前、向后和中心差分,可以用它 们作为函数()f x 在x i 处的微分近似值。
这些差分 与相应x 区间的比值()()[]()()[]()()[]1112h f x h f x h f x f x h h f x h f x h i i i i i i +---+--⎧⎨⎪⎪⎪⎩⎪⎪⎪ (5-2) 分别称为一阶向前、向后和中心差商,可以用它 们作为函数()f x 在x i 处的导数近似值。
完全类似 地可以定义高阶差商,例如常用的二阶中心差商()()()[]122hf x h f x f x h i i i +-+- (5-3) 可以作为函数()f x 在x i 处的二阶导数近似值。
§3.1 常微分方程初值问题的差分解法考虑电学中的一个问题:如图5-1。
研究 电容器上的电荷随时间的变化规律。
图5-1 RC 放电回路这个问题对应的微分方程及其定解条件为:d d Q tQ RC Q Q t =-=⎧⎨⎪⎩⎪=00(5-4) 这是一阶微分方程的初值问题,它的解析解为 Q Q e t RC =-0 (5-5)一、欧拉(Euler )折线法求解下列普遍形式的一阶微分方程的初值 问题:()[]()'=∈=⎧⎨⎪⎩⎪y f x y x a b y a y ,,0(5-6) 首先,将区间[]a b ,等分n 份,取值a x x xb n =<<<=01Λ,步长h x x i i =-+1。
微分方程欧拉方法
微分方程欧拉方法是一种常用的数值求解微分方程的方法。
它的基本思想是将微分方程转化为差分方程,通过逐步逼近的方法来求得方程的数值解。
在微分方程欧拉方法中,首先需要将微分方程化为差分方程。
考虑一个一阶常微分方程dy/dx=f(x,y),以及一个初始条件y(x0)=y0。
我们可以将自变量x的区间分割成n个小区间,每个小区间的长度为h=(x-x0)/n。
然后,利用离散化的方法,我们可以得到差分方程y(x+h)=y(x)+h*f(x,y)。
这个差分方程可以用来逐步逼近微分方程的数值解。
欧拉方法的步骤如下:首先,给定微分方程和初始条件;然后,选择合适的步长h和区间终点x;接下来,利用差分方程依次计算每个小区间内的y值,直到达到区间终点x为止。
通过这种逼近的方式,我们可以得到微分方程的数值解。
需要注意的是,微分方程欧拉方法的精度相对较低。
这是因为欧拉方法只是使用一阶差分公式来逼近微分方程,而没有考虑更高阶的导数信息。
因此,在某些情况下,欧拉方法可能会产生较大的误差。
为了提高精度,我们可以使用更高阶的数值方法,如改进的欧拉方法或龙格-库塔法。
总之,微分方程欧拉方法是一种简单而常用的数值求解微分方程的方法。
通过将微分方程转化为差分方程,并使用逼近的方式来求得数值解,我们可以获得一定程度上准确的结果。
但需要注意的是,欧拉方法的精度相对较低,可能会引入较大的误差。
如果需要更高的精度,则可以考虑其他更高阶的数值方法。
西北农林科技大学实习报告学院:理学院 专业年级:信计061 姓名:袁金龙 学号:15206012 课程:微分方程数值解 报告日期:2008-11-26实习一、一维问题的有限差分方法-----Euler 法一)实习问题:用欧拉法,龙格库塔法,米尔恩法求解下面的初值问题:'2(0)1tu u e u ⎧+=⎨=⎩二)算法描述:⑴欧拉法:1(,),0,1,2,...,1m m m m u u hf t u m n +=+=-⑵龙格库塔法的中点法:111(,(,)),0,1,2,...,122m m m m m m u u hf t h u hf t u m n +=+++=-⑶米尔恩法:2211(4),0,1,2,...,23m m m m m u u h f f f m n +++=+++=-⑷初始值的确定: 泰勒级数法1'1000()()()...()(1)q q j jh u u t u t jh ut q --=+++- ⑸雅可比迭代法1[1][]0[0]11(,)()()k n n m k k m k m k j m j j m j j m km k m k u h f t u u h f u uhf Euler βαβ-++++++=++-+-⎧=--⎪⎨⎪=⎩∑三)matlab 程序: ⑴问题函数:function [f1]=f(t,u) f1=-2*u+exp(t);*************************************************** ⑵欧拉法:function []=oula(a,b,u0,n) %[a,b]表示t 的取值区间%u0表示初值%n表示将[0,1]区间分成的分数h=(b-a)/n;t0=a;u(1)=u0+h*(f(t0,u0));for i=1:nt(i)=a+i*h;endtfor i=2:nu(i)=u(i-1)+h*f(t(i-1),u(i-1));endu%精确解的求法for i=1:nu1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1plot(t,u,t,u1)title('欧拉法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');*********************************************************** ⑶龙格库塔法的中点法:function []=zhongdian(a,b,u0,n)%[a,b]表示t的取值区间%u0表示初值%n表示将[0,1]区间分成的分数h=(b-a)/n;t0=a;u(1)=u0+h*(f((t0+(1/2)*h),(u0+(1/2)*h*f(t0,u0))));for i=1:nt(i)=a+i*h;endtfor i=2:nu(i)=u(i-1)+h*(f((t(i-1)+(1/2)*h),(u(i-1)+(1/2)*h*f(t(i-1),u(i-1))))); endu%精确解的求法for i=1:nu1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1plot(t,u,t,u1)title('中点法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');**************************************************************⑷米尔恩法:function []=Milne(n,e)%n表示区间[0,1]要分的份数%对于初值精度我们选择q=3阶的%初值的求解%经过计算运用泰勒级数法求解初值%q(i)表示第i次迭代满足精度的最终值t0=0;for i=1:nt(i)=(1/n)*i;endu0=1;h=1/n;u2(1,1)=1-h+2.5*h*h%Jacobi迭代求解隐式法u2(2,1)=u2(1,1)+h*f(t(1),u2(1,1))for i=2:1000000u2(2,i)=h*(1/3)*f(t(2),u2(2,i-1))+u0+h*(1/3)*f(t0,u0)+h*(4/3)*f(t(1),u2(1,1));if abs(u2(2,i)-u2(2,(i-1)))<eu2(3,1)=u2(2,i)+h*f(t(2),u2(2,i));break;endendfor i=3:nfor j=2:1000000u2(i,j)=h*(1/3)*f(t(i),u2(i,j-1))+u2(i-2,1)+h*(1/3)*f(t(i-2),u2(i-2,1))+h*(4/3)*f(t(i-1),u2(i-1,1));if abs(u2(2,j)-u2(2,(j-1)))<eu2(i+1,1)=u2(i,j)+h*f(t(i),u2(i,j));break;endendendq(1)=u2(1,1);for i=2:n-1q(i)=u2(i+1,1);end%精确解的求法for i=1:n-1t1(i)=(1/n)*i;endfor i=1:n-1u1(i)=(2/3)*exp(-2*t(i))+(1/3)*exp(t(i));endu1;plot(t1,q,t1,u1)title('Milne法中的预测值与真实值的比较');xlabel('采样点');ylabel('幅度');grid;legend('预测值','真实值');*********************************************************四)图形显示的计算结果:⑴欧拉法:表1:欧拉法中的预测值与真实值的比较(n=20时)真实值预测值误差(%)0.9500 0.9536 0.38260.9076 0.9142 0.72710.8721 0.8812 1.03170.8430 0.8540 1.29550.8197 0.8324 1.51810.8020 0.8158 1.70050.7893 0.8041 1.84400.7813 0.7968 1.95110.7777 0.7938 2.02490.7784 0.7948 2.06860.7830 0.7997 2.08620.7913 0.8082 2.08150.8033 0.8202 2.05850.8188 0.8356 2.02070.8376 0.8544 1.97160.8597 0.8764 1.91430.8850 0.9017 1.85140.9135 0.9301 1.78530.9451 0.9616 1.71790.9799 0.9963 1.6506表2:欧拉法中的预测值与真实值的比较(n=10时)真实值 预测值 误差(%)0.9000 0.9142 1.5544 0.8305 0.8540 2.7514 0.7866 0.8158 3.5882 0.7642 0.7968 4.0910 0.7606 0.7948 4.3105 0.7733 0.8082 4.31150.8009 0.8356 1.638 0.8421 0.8764 1.6736 0.8962 0.9301 1.6943 0.96290.99631.70540.10.20.30.40.50.60.70.80.910.750.80.850.90.951欧拉法中的预测值与真实值的比较采样点幅度图1:欧拉法中的预测值与真实值的比较(分成20份时)说明:从图1及表1和表2中可以看出:采用欧拉法对初值问题的近似比较准确,且从算法中可以推断,随着n (将[a,b]区间分成的分数)值的增大,误差将会越来越小。
欧拉梁方程有限差分欧拉梁方程是物理学和工程学中最基本的物理模型之一,可以用来解释许多现象,比如传播、振动、热传导等等。
这一方程也是日常生活中最普遍的物理模型,比如人们会在摆动秋千或滑板时用到它。
欧拉梁方程有限差分法是一种用来求解欧拉梁方程的数值求解方法,它利用近似的微分方程来把欧拉梁方程的复杂的数学模型简化成数值的形式。
有限差分法是一种有效的、简单的和快速的数值求解方法,它可以在不花费太多时间和金钱的情况下解决复杂的算法问题。
欧拉梁方程的有限差分法主要由以下几个步骤组成:首先,将欧拉梁方程写成一个多元微分方程;然后,采用有限差分法将其转化成离散形式;最后,利用特定的算法解决离散形式的多元微分方程。
这样,就可以得到所有欧拉梁方程的解,而不需要计算原始的欧拉梁方程。
有限差分法的优势在于可以快速准确的解决欧拉梁方程,而且也可以用于计算实际问题。
有限差分法可以给出精确度较高的结果,而且它可以在不耗费太多计算时间的情况下解决绝大部分欧拉梁方程问题。
有限差分法也可以用来求解不可解析的方程,这样可以节省大量的计算时间。
有限差分法对于计算欧拉梁方程提供了一种简单高效的方法,可以用来解决复杂的物理模型问题。
它的算法简单,执行效率高,准确度高,可以用来求解任何复杂的欧拉梁方程问题。
有限差分法的应用还可以延伸到物理学和力学的其他领域,例如地质动力学、流体力学等。
总之,欧拉梁方程有限差分法是一种使用近似的微分方程来求解欧拉梁方程的数值求解方法,可以用来解决欧拉梁方程以及其他物理模型的问题,这种方法具有简单高效、计算时间少、准确等特点,也可以用来求解不可解析的方程,因此有限差分法对于计算欧拉梁方程具有重要的应用价值。
第三章 有限差分法函数()f x ,x 为定义在区间[]a b ,上的连续变 量。
将区间[]a b ,等分成n 份,令()h b a n =-称为 步长,x 在这些离散点处的取值为x a ih i =+ ()i n =01,,,称为节点。
函数()f x 在这些节点处的差值()()()()()()f x h f x f x f x h f x h f x h i i i i i i +---+--⎧⎨⎪⎩⎪(5-1)分别称为一阶向前、向后和中心差分,可以用它 们作为函数()f x 在x i 处的微分近似值。
这些差分 与相应x 区间的比值()()[]()()[]()()[]1112h f x h f x h f x f x h h f x h f x h i i i i i i +---+--⎧⎨⎪⎪⎪⎩⎪⎪⎪ (5-2) 分别称为一阶向前、向后和中心差商,可以用它 们作为函数()f x 在x i 处的导数近似值。
完全类似地可以定义高阶差商,例如常用的二阶中心差商()()()[]122hf x h f x f x h i i i +-+- (5-3)可以作为函数()f x 在x i 处的二阶导数近似值。
§3.1 常微分方程初值问题的差分解法考虑电学中的一个问题:如图5-1。
研究 电容器上的电荷随时间的变化规律。
图5-1 RC 放电回路这个问题对应的微分方程及其定解条件为:d d Q tQ RC QQ t =-=⎧⎨⎪⎩⎪=00(5-4) 这是一阶微分方程的初值问题,它的解析解为 Q Q e t RC =-0 (5-5)一、欧拉(Euler )折线法求解下列普遍形式的一阶微分方程的初值 问题:()[]()'=∈=⎧⎨⎪⎩⎪y f x y x a b y a y ,,0(5-6) 首先,将区间[]a b ,等分n 份,取值a x x xb n =<<<=01 ,步长h x x i i =-+1。
差分法欧拉格式浅谈
科学计算中常常求解常微分方程的定解这类问题的最简形式是一阶方程的初值问题
⎩⎨⎧=='00
)(),(y x y y x f y (1) 这里假定右函数),(y x f 适当光滑,譬如关于y 满足Lipschitz 条件,以保证上述初值问题的解y(x)存在且唯一。
虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程。
求解从实际问题当中归结出来的微分方程主要靠数值解法。
差分方法是一类重要的数值解法。
这类方法回避解y(x)的函数表达式,而是寻求它在一系列离散节点
<<<<<n x x x x 210
上的近似值 ,,,,,21n o y y y y 。
相邻的两个节点的间距n n x x h -=+1称作步长。
假定步长为定数。
差分方法是一类离散化方法,这类方法将寻求解y(x)的分析问题转化为计算离散值n y 的代数问题,从而使问题获得了实质性的简化。
然而随之带来的困难是,由于数据量{}n y 往往很大,差分方法所归结出的可能是个大规模的代数方程组。
初值问题的各种差分方法有个基本特点,它们都采取“步进式”,即求解过程顺着节点排列的次序一步一步地向前推进。
描述这类算法,只要给出从已知信息 ,,,21--n n n y y y 计算1+n y 的递推公式。
这类计算公式称作差分格式。
差分格式中仅含一个未知参数1+n y ,或者说,它是仅含一个变元1+n y 的代数方程,这就大大地缩短了计算问题的规模。
总之,差分方法的设计思想是,将寻求微分方程的解y(x)的分析问题化归为计算离散值{}n y 的代数问题,而“步进式”则进一步将计算模型化归为仅含一个变元1+n y 的代数方程——差分格式。
Euler 方法
方程(1)中含有导数项)(x y ',这是微分方程的本质特征,也正是它难以求
解的症结所在。
导数是极限过程的结果,而计算过程则总是有限的。
因此数值解法的第一步就是消除式(1)中的导数项y ',这项手续称作离散化。
由于差商是是微分的近似计算,实现离散化的一种直截了当的途径是用差商替代导数。
Euler 格式
设在区间[]1,+n n x x 的左端点n x 列出方程(1)即
))(,()(0n n x y x f x y =' 并用差商h
x y x y n n )()(1-+替代其中的导数项)(n x y ',则有近似关系式 ))(,()()(1n n n n x y x hf x y x y +≈+ (2)
若用)(n x y 的近似值n y 代入上式右端,并记所得结果为1+n y ,这样设计出的计算公式
2,1,0),,(1=+=+n y x hf y y n n n n (3)
就是著名的Euler 格式。
若初值0y 已知,则依据格式(3)可逐步算出数值解 21,y y 。
再从图形上看,假设节点),(n n n y x P 位于积分曲线)(x y y =上,则按Euler 格式定出的节点),(111+++n n n y x P 落在积分曲线)(x y y =的切线上,从这个角度也可以看出,Euler 格式是很粗糙的。
隐式Euler 格式
再在区间[]1,+n n x x 的右端点1+n x 列出方程(1),即
))(,()(111+++='n n n x y x f x y
并改用点1+n x 处的向后差商h
x y x y n n )()(1-+替代方程中的导数项)(1+'n x y ,再离散化,即可导出隐式Euler 格式
),(111++++=n n n n y x hf y y (5)
这一格式与Euler 格式(3)有着本质的区别:Euler 格式(3)是关于1+n y 的一个直接的计算公式,称这类格式是显式的;而格式(5)的右端含有未知的1+n y 它实际上是个关于1+n y 的函数方程,这类格式是隐式的。
隐式格式的计算远比显式格式困难。
由于数值微分的向前差商公式与向后差商公式具有同等精度,可以预料,隐式Euler 格式(5)与显式Euler 格式(3)的精度相当,两者精度都不高。
Euler 两步格式 为了改善精度,可以改用中心差商[])()(2111-+-n n x y x y h
替代方程 ))(,()(n n n x y x f x y ='
中的导数项,再离散化,即可导出下列格式:
),(211n n n n y x hf y y +=-+ (6)
无论是显式Euler 格式(3)还是隐式Euler 格式(5),它们都是单步法,其特点是计算1+n y
时只用到前一步的信息n y ;然而格式(6)除了n y 以外,还显含更前一步的信息1-n y ,即调用了前面两步的信息,Euler 两步格式因此而得名。
Euler 两步格式(6)虽然比Euler 格式或隐式Euler 格式具有更高的精度,但它是一种两步法。
两步法不能自行启动,实际使用时除初值0y 外还需要借助于某种一步法再提供一个开始值y 1,这就增加了计算程序的复杂性。
梯形格式
设将方程),(y x f y ='的两端从n x 到1+n x 求积分,即得
⎰++=+1
))(,()()(1n n x x n n dx x y x f x y x y (7)
显然,为要通过这个积分关系式获得)(1+n x y 的近似值,只要近似地算出其中的积分项⎰+1
))(,(n n x x dx x y x f ,而选择不同的计算方法计算这个积分项,就会得到
不同的差分格式。
例如,利用矩形方法计算积分项
⎰+≈1
))(,())(,(n n x x n n x y x hf dx x y x f
代入式(7)有近似关系式
))(,()()(1n n n n x y x hf x y x y +≈+
据此离散化又可导出Euler 格式(3)。
由于数值积分的矩形方法精度很低,Euler 格式当然很粗糙。
为了提高精度,改用梯形方法计算积分项
[]))(,())(,(2
))(,(111+++≈⎰+n n n n x x x y x f x y x f h dx x y x f n n 再代入式(7),有
[]))(,())(,(2
)()(111+++++≈n n n n n n x y x f x y x f h x y x y 设将式中的)(n x y ,)(1+n x y 分别用n y ,1+n y 替代,作为离散化的结果导出下列计算格式:
[]),(),(2
111+++++
=n n n n n n y x f y x f h y y (8) 与梯形求积公式相呼应的这一差分格式称作梯形格式。
容易看出,梯形格式(8)实际上是显式Euler 格式(3)与隐式Euler 格式
(5)的算术平均。
改进的Euler 格式
Euler 格式(3)是一种显式算法,其计算量小,但计算精度低;梯形格式(8)虽然提高了精度,但它是一种隐式算法,需要借助于迭代过程求解,计算量大。
可以综合使用这两种方法,先用Euler 格式求得一个初步的近似值1+n y ,称作预报值;预报值的精度不高,用它替代式(8)右端的1+n y 再直接计算,得到校正值1+n y ,这样建立的预报校正系统
[]
⎪⎩⎪⎨⎧++=+=++++),(),(2),(1111n n n n n n n n n n y x f y x f h y y y x f y y (9) 称作改进的Euler 格式。
这是一种显式格式,它可表达为如下嵌套形式:
[])),(,(),(2
11n n n n n n n n y x hf y x f y x f h y y +++=++ 或平均化形式
⎪⎪⎪⎩
⎪⎪⎪⎨⎧+=+=+=++)(21),(),(11c p n p n n c n n n p y y y y x hf y y y x hf y y (10)
比较几种Euler 格式。
Euler 格式是显式计算,计算量小,结构简单,但精度低;梯形格式改善了精度,但它是隐式的,求解困难。
相比之下改进的Euler 格式无论是计算量还是精度都是可取的。