常微分方程数值解法
- 格式:doc
- 大小:414.50 KB
- 文档页数:28
介绍常微分方程数值解法常微分方程(ordinary differential equations,ODE)可用于描述许多日常存在的物理系统。
处理ODE问题常常被称为数值求解法,这指的是找到概括ODE或者其他适用于数学模型的解决方案来模括这些ODE。
这种解决方案可能在一系列不同方案中发挥重要作用,以此来提供更好的解释和预测。
常微分方程与几何图形更为相关,它利用二维或者三维空间中曲线的绘制以及分析。
通过引入一些不同的方法,可以对不同的常微分方程中的量进行描述,使得可以通过数值方法的解析来进行研究。
数值解法可能是时间消耗较多的,但有助于验证几何图形中的某些过程,以此帮助揭示数学模型。
四种常见的常微分方程数值解法四种常见的常微分方程数值解法是:前向差分法、向后差分法、中点法和全分方法。
•前向差分法:前向差分法的基本概念是利用ODE的特定解来表达时间步的影响。
这是一种基本的数值法,可以在ODE中确定任意位置的点作为终点。
在这里,任何这样的点都可以表示为ODE右边的时间步。
•向后差分法:它是反过来基于前向差分法。
它要求对ODE中的时间步进行逆向推导,以获得某一特定点的解。
向后差分法要求推导反向解中点,以便可以从每一步中获取该点的解。
•中点法:这是一种非常基本的数值解法,可以用来求解ODE中的某一步的解,但不具有直观的方法解释。
主要的思想是在每一次时间步中通过求出ODE的中点来寻找解。
•全分方法:这是一种更复杂的数值解法,它要求将ODE中的每一步解细分并解决。
与前面提到的三种解法不同,它首先要求将ODE分解成若干离散区间,然后计算每一段区间中的点。
这种解法可以更准确地进行处理,但时间消耗较多,因此比较少被使用。
优化方案在需要解决常微分方程时,为了得到最佳的结果,有必要考虑一些优化措施。
•首先,应考虑将一个复杂的ODE拆分成一些更易解决的问题。
这样做的结果是,预见到解决此ODR的总耗时将会降低。
•其次,为了加快计算速度,可以考虑使用预解算法。
常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。
由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。
本文将介绍几种常用的常微分方程的数值解法。
2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。
四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
常微分方程组数值解法一、引言常微分方程组是数学中的一个重要分支,它在物理、工程、生物等领域都有广泛应用。
对于一些复杂的常微分方程组,往往难以通过解析方法求解,这时候数值解法就显得尤为重要。
本文将介绍常微分方程组数值解法的相关内容。
二、数值解法的基本思想1.欧拉法欧拉法是最基础的数值解法之一,它的思想是将时间连续化,将微分方程转化为差分方程。
对于一个一阶常微分方程y'=f(x,y),其欧拉公式为:y_{n+1}=y_n+hf(x_n,y_n)其中h为步长,x_n和y_n为第n个时间点上x和y的取值。
2.改进欧拉法改进欧拉法是对欧拉法的改良,其公式如下:y_{n+1}=y_n+\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},y_n+hf(x_n,y_n))] 3.四阶龙格-库塔方法四阶龙格-库塔方法是目前最常用的数值解法之一。
其公式如下:k_1=f(x_n,y_n)k_2=f(x_n+\frac{h}{2},y_n+\frac{h}{2}k_1)k_3=f(x_n+\frac{h}{2},y_n+\frac{h}{2}k_2)k_4=f(x_n+h,y_n+hk_3)y_{n+1}=y_n+\frac{h}{6}(k_1+2k_2+2k_3+k_4)其中,k_i为中间变量。
三、常微分方程组的数值解法1.欧拉法对于一个二阶常微分方程组:\begin{cases} y'_1=f_1(x,y_1,y_2) \\ y'_2=f_2(x,y_1,y_2)\end{cases}其欧拉公式为:\begin{cases} y_{n+1,1}=y_{n,1}+hf_1(x_n,y_{n,1},y_{n,2}) \\y_{n+1,2}=y_{n,2}+hf_2(x_n,y_{n,1},y_{n,2}) \end{cases}其中,x_n和y_{n,i}(i=1, 2)为第n个时间点上x和y_i的取值。
常微分方程的数值解法常微分方程是研究变量的变化率与其当前状态之间的关系的数学分支。
它在物理、工程、经济等领域有着广泛的应用。
解常微分方程的精确解往往十分困难甚至不可得,因此数值解法在实际问题中起到了重要的作用。
本文将介绍常见的常微分方程的数值解法,并比较其优缺点。
1. 欧拉方法欧拉方法是最简单的数值解法之一。
它基于近似替代的思想,将微分方程中的导数用差商近似表示。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
欧拉方法的计算简单,但是由于误差累积,精度较低。
2. 改进欧拉方法为了提高欧拉方法的精度,改进欧拉方法应运而生。
改进欧拉方法通过使用两个点的斜率的平均值来计算下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
改进欧拉方法相较于欧拉方法而言,精度更高。
3. 龙格-库塔法龙格-库塔法(Runge-Kutta)是常微分方程数值解法中最常用的方法之一。
它通过迭代逼近精确解,并在每一步中计算出多个斜率的加权平均值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)计算各阶导数的导数值。
(4)根据权重系数计算下一个点的值。
与欧拉方法和改进欧拉方法相比,龙格-库塔法的精度更高,但计算量也更大。
4. 亚当斯法亚当斯法(Adams)是一种多步法,它利用之前的解来近似下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)通过隐式或显式的方式计算下一个点的值。
亚当斯法可以提高精度,并且比龙格-库塔法更加高效。
5. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。
多步法通过利用多个点的值来逼近解,从而提高精度。
而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。
第七章 常微分方程数值解法常微分方程中只有一些典型方程能求出初等解(用初等函数表示的解),大部分的方程是求不出初等解的。
另外,有些初值问题虽然有初等解,但由于形式太复杂不便于应用。
因此,有必要探讨常微分方程初值问题的数值解法。
本章主要介绍一阶常微分方程初值问题的欧拉法、龙格-库塔法、阿达姆斯方法,在此基础上推出一阶微分方程组与高阶方程初值问题的 数值解法;此外,还将简要介绍求解二阶常微分方程值问题的差分方法、试射法。
第一节 欧拉法求解常微分方程初值问题⎪⎩⎪⎨⎧==00)(),(y x y y x f dxdy(1)的数值解,就是寻求准确解)(x y 在一系列离散节点 <<<<<n x x x x 210 上的近似值 ,,,,,210n y y y y{}n y 称为问题的数值解,数值解所满足的离散方程统称为差分格式,1--=i i ix x h 称为步长,实用中常取定步长。
显然,只有当初值问题(1)的解存在且唯一时,使用数值解法才有意义,这一前提条件由下 面定理保证。
定理 设函数()y x f ,在区域+∞≤≤-∞≤≤y b x a D ,:上连续,且在区域D 内满足李普希兹(Lipschitz)条件,即存在正数L ,使得对于R 内任意两点()1,y x 与()2,y x ,恒有()()2121,,y y L y x f y x f -≤-则初值问题(1)的解()x y 存在并且唯一。
一、欧拉法(欧拉折线法)若将函数)xy 在点nx处的导数()n x y '用两点式代替, 即()hx y x y x y n n n )()(1-≈'+,再用n y 近似地代替()n x y ,则初值问题(1)变为⎩⎨⎧==++=+ ,2,1,0),()(001n x y y y x hf y y n n n n(2)(2)式就是著名的欧拉(Euler)公式。
以上方法称 为欧 拉法或欧拉折线法。
欧拉公式有明显的几何意义。
从几何上看,求解初值问题(1)就是xy 平面上求一条通过点()00,y x 的曲线()x y y =,并使曲线上任意一点()y x ,处的切线斜率为()y x f ,。
欧拉公式的几何意义就是从点)000,y x P 出发作一斜率为()00,y x f 的直线交直线1x x =于点()111,y x P ,1P 点的纵坐标1y 就是()1x y 的近似值;再从点1P 作一斜率为()11,y x f 的直线2x x =交直线于点()222,y x P , 2P 点的纵坐标2y 就是的近似值()2x y ;如此继续进行,得一条折线 210P P P 。
该折线就是解()x y y =的近似图形,如图7-1。
图7-1欧拉法的其它几种解释:1.假设()x y 在n x 附近展开成泰勒级数()()()()()()()()+''++=+''+'+=+n n n n n n n n x y h x y x hf x y x y hx y h x y x y 2,2221取h 的线性部分,并用n y 作为()n x y 的近似值,得 ()n n n n y x hf y y ,1+=+2. 对方程()y x f dxdy,=两边从n x 到1+n x 积分,得()dxx y x f x y x y n nx x n n ⎰+=-+1))(,()(1 (3)用 矩形公式计算上式右侧积分,即 ()()x x x x x d x y x f dx x y x f n nn n⎰⎰++≈11,))(,(并用n y 作为的近似值()n x y ,得()n n n n y x hf y y ,1+=+ 故欧拉法也称为矩形法。
二、改进的欧拉法(梯形法)欧拉法形式简单,低,特别当曲线y=y(x)计算方便,但精度比较的曲率较大时,欧拉法的效果更差。
为了达到较高精度的计算公式,对欧拉法进行改进,用梯形公式计算(3)式 右侧积分,即()()()()[]11,,2))(,(1+++≈⎰+n n n n x x x y x f x y x f h dx x y x f n n并用y n 作为y(x n )的近似值,得到改进 的欧拉公式()()[]111,,2+++++=n n n n n n y x f y x f h y y(4)上述方法称为改进的欧拉法,也称为梯形法。
不难发现,欧拉公式 是 关于y 1+n 的显式,即只要已知y n ,经过一次计算便可得y 1+n 的值,而改进的 欧拉公式是以y 1+n 的隐式方程给出,不能直接得到y 1+n 。
隐式方程(4)通常用 迭代法求解,而迭代过程的实质是逐步显式化。
先用欧拉 公式()()n n n n y x hf y y ,01+=+给出y 1+n 的迭代初值,然后 再用改进的欧拉公式(4)进行迭代,即有[]⎪⎪⎩⎪⎪⎨⎧=++=+=+++++ ,2,1,0),(),(2),()(11)1(1)0(1k y x f y x f h y y y x hf y y k n n n n nk n n n n n (5) 迭代过程进行到连续两次迭代结果之差的绝对值小于给定的精度ε即()εkn k n y y 111+++-为止,这时取()111+++=k n n y y然后再转入下一步计算。
下面讨论(){}kn y 1+是否收敛;若收敛,它的极限是否满足(4)式。
假设f(x,y)满足李普希兹条件 ()()()2121,,y y L y x f y x f -≤- 则()()()()()()()()()()()011122111211111111111222,,2++-+-+-++-+++++++-⎪⎭⎫⎝⎛≤≤-⎪⎭⎫ ⎝⎛≤-≤-=-n n k n k n k n k n k n n k n n k n k n y y hL y y hL y y hL y x f y x f h y y由此可见,只要12<hL (这里只要步长h 足够小即可),当k →∞时,有02→⎪⎭⎫⎝⎛khL ,所以(){}kn y 1+收敛。
又因为f(x ,y)对y 连续,当k →∞时,对等式()()()()[]k n n n nn k n y x f y xf h y y 1111,,2++++++=两端取极限, 得()()[]111,,2+++++=n n n n n n y x f y x f h y y因 此,只要步长h 足够小,就可保证(){}kn y 1+收敛到满足(4)式的1+n y。
三、预估一校正法改进的欧拉公式在实际计算时要进行多次 迭代,因而计算量较大。
在实用上,对于改进的欧拉公式(5)只迭代一次,即先用欧拉公式算出y 1+n 的预估值y)0(1+n ,再用改进的欧拉公式(4)进行一次迭代得到 校正值y 1+n ,即()()[]⎪⎩⎪⎨⎧=++=+=++++ ,2,1,0,,,2),(111)0(1n y x f y x f h y y y x hf y y n n n n n n n n n n (6)预估—校正公式也常写成下列形式:(),2,1,0,,),(2121121211=⎪⎪⎩⎪⎪⎨⎧++==++=+n k y h x hf k y x hf k k k y y n n n n n n (7)四、公式的截断误差定义 若某种微分方程数值解 公式的截断误差是O(h1+k ),则称这种方法是k 阶方法。
为了简化分析,在进行误差分析时,我们假设前一步的结果是准确的,即在 y n =y(x n )的前提下,考虑用y 1+n 作为y(x 1+n )的近似值而产生的截断误差,这种误差称为局部截断误差。
由泰勒公式()()()()()+''+'+=+=+n n n n n x y hx y b x y h x y x y !221对于欧拉公式,有()()()n n n n n n x y h x y y x hf y y '+=+=+,1 于是()()211hO y x y n n =-++则欧拉公式的截断误差为O(2h ),所以 欧拉法是一阶方法。
对于预估—校正公式,有()()()()()()()()()()()[]()()()()()()()[]+'++=+++=++=++='==n n y n n nxn n n n y n n xn n n n n n n n n x y x f x y x y xf hx y x hf x y x f k x y x hf x y x f h k x y h x hf k y h x hf k x y h y x hf k ,,,,,,,,,211121而()()()()()()()()()x y x f x y x y x f x y x y x f x y y x ,,,⋅'+=''='于是()()+''+'=n n x y h x y h k 22因此()()()+''+'+=++=+n n n n n x y hx y h x y k k y y 221212211所以y(x 1+n )- y 1+n = O(3h )则预估—校正公式的截断误差为O(3h ),也即预估—校正法是二阶方法。
可以证明,改进的欧拉公式与预估—校正公式的截断误差相同,均为O(3h )。
这里略去证明。
例 1:在区间[0,1]上以h=0.1为步长,分别用欧拉法与预估— 校正法求初值问题⎪⎩⎪⎨⎧=-=1)0(2y y x y dx dy的数值解解:该方程为贝努利方程,其精确解为x y 21+=欧拉公式的具体形式为⎪⎪⎭⎫ ⎝⎛-+=+nnnn n y x y h y y 21预估—校正公式的具体形式为()⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎪⎭⎫⎝⎛++-+=-=++=+11212112)2(2121k y h x k y hf k y x y hf k k k y y n n nn nn n n 取步长1,0,1.000===y x h ,计算结果见下表:表7-1表7-1近似解与准确解比较,欧拉法的结果大致只有两位有效数字,而预估—校正法的结果则 有3位有效数字。
第二节 龙格—库塔法前面讨论的欧拉法与改进的欧拉法都是一步 法,即计算y 1+n 时,只用到前一步值。
龙格—库塔(Runge-Kut ta)法(简称为 R-K 方法)是一类高精度的一步法,这类方法与泰勒级数法有着密 切的关系。
一、泰勒级数法设有初值问题⎪⎩⎪⎨⎧==00)(),(y x y y x f dx dy由 泰勒展开式()()()()()()()()121!!2+++++''+'+=+=k n k kn n n n n hO x yk hx y hx y h x y h x y x y (1)若令()()()()n k kn n n x yk hhx y h x y y !!221+++'+=+ (2)则()()111+++=-k n n hO y x y即公式(2)为k 阶方法。