计算方法5.常微分方程的数值解法讲解

合集下载

常微分方程的数值解

常微分方程的数值解

f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
常微分方程的数言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn

计算方法―-常微分方程的数值解法316精品PPT课件

计算方法―-常微分方程的数值解法316精品PPT课件
0.00000 0.35287 0.50049 0.50073 0.45425 0.40227
y(xn) 0.00000 0.34483 0.48780 0.49180 0.44944 0.40000
0.00000 0.34483 0.48780 0.49180 0.44944 0.40000
0.00000 0.34483 0.48780 0.49180 0.44944 0.40000
2021/2/4
17
这些解法都可以写成向量形式 用于一阶常微分方程组的初值问题。 也就解决了高阶方程的定解问题。
2021/2/4
18
9.2、初值问题的数值解法―单步法
简单的数值方法与基本概念
1. 简单欧拉法(Euler) 2.后退的欧拉法 3.梯形法 4.改进Euler法
2021/2/4
19
1. 简单的欧拉(Euler)方法 考虑模型:
a
2
得 yn1 yn (xn 1 xn ) f (xn , y(xn ))
hf (xn , y(xn ))
或用向前差 商近似导数
y(xn )
y(xn1 ) h
y(xn )
x0
x1
y(xn1) y(xn ) hy(xn ) yn h f (xn , yn )
2021/2/4
23
yi1 yi h f (xi , yi ) (i 0, ... ,n 1)
x y 2
2
2021/2/4
z 2
二阶偏微分方程
12
4.什么是微分方程的数值解?
虽然求解微分方程有许多解析方法,但解析方法 只能够求解一些特殊类型的方程,从实际意义上来讲, 我们更关心的是某些 特定的自变量在某一个定义范 围内的一系列离散点上的近似值。

求常微分方程的数值解

求常微分方程的数值解

求常微分方程的数值解一、背景介绍常微分方程(Ordinary Differential Equation,ODE)是描述自然界中变化的数学模型。

常微分方程的解析解往往难以求得,因此需要寻找数值解来近似地描述其行为。

求解常微分方程的数值方法主要有欧拉法、改进欧拉法、龙格-库塔法等。

二、数值方法1. 欧拉法欧拉法是最简单的求解常微分方程的数值方法之一。

它基于导数的定义,将微分方程转化为差分方程,通过迭代计算得到近似解。

欧拉法的公式如下:$$y_{n+1}=y_n+f(t_n,y_n)\Delta t$$其中,$y_n$表示第$n$个时间步长处的函数值,$f(t_n,y_n)$表示在$(t_n,y_n)$处的导数,$\Delta t$表示时间步长。

欧拉法具有易于实现和理解的优点,但精度较低。

2. 改进欧拉法(Heun方法)改进欧拉法又称Heun方法或两步龙格-库塔方法,是对欧拉法进行了精度上提升后得到的一种方法。

它利用两个斜率来近似函数值,并通过加权平均来计算下一个时间步长处的函数值。

改进欧拉法的公式如下:$$k_1=f(t_n,y_n)$$$$k_2=f(t_n+\Delta t,y_n+k_1\Delta t)$$$$y_{n+1}=y_n+\frac{1}{2}(k_1+k_2)\Delta t$$改进欧拉法比欧拉法精度更高,但计算量也更大。

3. 龙格-库塔法(RK4方法)龙格-库塔法是求解常微分方程中最常用的数值方法之一。

它通过计算多个斜率来近似函数值,并通过加权平均来计算下一个时间步长处的函数值。

RK4方法是龙格-库塔法中最常用的一种方法,其公式如下:$$k_1=f(t_n,y_n)$$$$k_2=f(t_n+\frac{\Delta t}{2},y_n+\frac{k_1\Delta t}{2})$$ $$k_3=f(t_n+\frac{\Delta t}{2},y_n+\frac{k_2\Delta t}{2})$$ $$k_4=f(t_n+\Delta t,y_n+k_3\Delta t)$$$$y_{n+1}=y_n+\frac{1}{6}(k_1+2k_2+2k_3+k_4)\Delta t$$三、数值求解步骤对于给定的常微分方程,可以通过以下步骤求解其数值解:1. 确定初值条件:确定$t=0$时刻的函数值$y(0)$。

常微分方程的数值解算法

常微分方程的数值解算法

常微分方程的数值解算法常微分方程的数值解算法是一种对常微分方程进行数值计算的方法,这可以帮助我们更好地理解和研究自然现象和工程问题。

在本文中,我们将介绍一些常用的数值解算法,探讨它们的优缺点和适用范围。

常微分方程(ODE)是描述自然现象和工程问题的重要数学工具。

然而,对于许多ODE解析解是无法求出的,因此我们需要通过数值方法对其进行求解。

常微分方程可以写作:y' = f(t, y)其中,y是函数,f是给定的函数,表示y随t的变化率。

这个方程可以写成初始值问题(IVP)的形式:y'(t) = f(t,y(t)),y(t0) = y0其中,y(t0)=y0是方程的初始条件。

解决IVP问题的典型方法是数值方法。

欧拉方法欧拉方法是最简单的一阶数值方法。

在欧拉方法中,我们从初始条件开始,并在t = t0到t = tn的时间内,用以下公式逐步递推求解:y n+1 = y n + hf (t n, y n)其中,f(t n,y n)是点(t n,y n)处的导数, h = tn - tn-1是时间间隔。

欧拉方法的优点是简单易懂,容易实现。

然而,它的缺点是在整个时间段上的精度不一致。

程度取决于使用的时间间隔。

改进的欧拉方法如果我们使用欧拉方法中每个时间段的中间点而不是起始点来估计下一个时间点,精度就会有所提高。

这个方法叫做改进的欧拉方法(或Heun方法)。

公式为:y n+1 = y n + h½[f(t n, y n)+f(tn+1, yn + h f (tn, yn))]这是一个二阶方法,精度比欧拉方法高,但计算量也大一些。

对于易受噪声干扰的问题,改进的欧拉方法是个很好的选择。

Runge-Kutta方法Runge-Kutta方法是ODE计算的最常用的二阶和高阶数值方法之一。

这个方法对定义域内的每个点都计算一个导数。

显式四阶Runge-Kutta方法(RK4)是最常用的Runge-Kutta方法之一,并已得到大量实践的验证。

常微分方程数值解法

常微分方程数值解法

介绍常微分方程数值解法常微分方程(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个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。

常微分方程数值解法

常微分方程数值解法

ρ ρ
n+1 n
≤1
三、梯形公式
由 分 径 y ( xn+1) = y ( xn) + 积 途 : xn+1

f ( x, y)dt

积分 梯形 式 且令:yn+1 = y( xn+1), yn = y( xn) 用 公 , h 则 yn+1 = yn + ( f (xn , yn) + f (xn+1 , yn+1)) 得: 2
第九章 常微分方程数值解法
§1 、引言
一 常 分 程 初 问 : 阶 微 方 的 值 题 dy dx = f (x, y) y( x0) = y0
'
a ≤ x ≤b
2 y 例 : 方 程 xy -2 y = 4 x ⇒ y = + 4 x 2 y 令 :f ( x , y ) = + 4 且 给 出 初 值 y (1 )= -3 x 就 得 到 一 阶 常 微 分 方 程 的 初 值 问 题 : 2 y dy = f (x, y) = + 4 dx x y(1) = − 3
n n n n n 2 // n n+1
~
y
n+1
= yn + hf ( xn, yn ) = y(xn) + hf
n+1
~
y
n+1
( x , y( x ))
n n
则 T = y( x ) − = h y (ξ ) x y 2 ~
// n+1 n+1
2
n
< ξ < xn+1

常微分方程组数值解法

常微分方程组数值解法

常微分方程组数值解法一、引言常微分方程组是数学中的一个重要分支,它在物理、工程、生物等领域都有广泛应用。

对于一些复杂的常微分方程组,往往难以通过解析方法求解,这时候数值解法就显得尤为重要。

本文将介绍常微分方程组数值解法的相关内容。

二、数值解法的基本思想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. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.3 龙格 - 库塔法 /* Runge-Kutta Method */
建立高精度的单步递推格式。
单步递推法的基本思想是从 ( xi , yi ) 点出发,以某一斜 率沿直线达到 ( xi+1 , yi+1 ) 点。欧拉法及其各种变形所 能达到的最高精度为2阶。
考察改进的欧拉法,可以将其
改写为:
2
Step 3: 将 yi+1 与 y( xi+1 ) 在 xi 点的泰勒展开作比较
yi1 yi (1 2 )h y( xi ) 2 ph2 y( xi ) O(h3 )
y( xi1 )
y( xi ) hy( xi )
h2 2
y( xi ) O(h3 )
y)

f y ( x, f y ( x,
y) y)
dy dx f (x,
y)
K2 f ( xi ph, yi phK1 ) f ( xi , yi ) phfx ( xi , yi ) phK1 f y ( xi , yi ) O(h2 ) y( xi ) phy( xi ) O(h2 )
首先:
y( xi1 )

y( xi
)

hy' (xi )

1 2!
h
2
y"
(
xi
)

O(h3 )
2019/9/9
7
另一方面:
将K2在(xi,yi)处展开。
( f (x0
x, y0
y)

f
(
x0
,
y0
)

(x
x

y
y
)
f
(
x0
,
y0
)

...)
K2 = f (xi,yi) + a2hf x'(xi,yi) + b21hK1 f y'(xi,yi) + O(h2)
若取K1=f(xi,y(xi))——Euler公式
取K2=f(xi+1,y(xi+1))——向后Euler公式 一阶精度

1 2
(K1

K2
)
——
梯形公式
二阶精度
猜想:若能多预测几个点的斜率,再取其加权平均作为K,
可望得到较高精度的数值解,从而避免求f 的高阶导数。
2019/9/9
5
2. RK公式
代替y(xi)、y(xi+1),得到差分方程:
yi1

yi

hf
( xi
,
yi
)

h2 2!
f
'
( xi
,
yi
)

...

hp p!
f ( p1) ( xi , yi )
• 其局部截断误差为:
y( xi1 )

~yi1

(
h p1 p 1)!
y ( p1) ( )
差分方程为p阶方式,上述方式称为Taylor方式。

p
yi1 yi h c j K j

K1

j 1
f (xi , yi )

j 1


Kj

f (xi
a jh, yi
h bjsKs ),
s1
2 j p
其中Kj为y = y(x)在xi + ajh (0 aj 1)处的斜率预测值。 aj,bjs,cj为特定常数。
要求 Ri y( xi1 ) yi1 O(h3 ) ,则必须有:
1 2 1 ,
2
p

1 2
这里有 3 个未知 数, 2 个方程。
存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库
塔格式。注意到,p 1,
1
2

1 就是改进的欧拉法。
2
Q: 为获得更高的精度,应该如何进一步推广?
注:利用Tayler公式构造,不实用,高阶导数f (i)不易
计算。
2019/9/9
4
RungeKutta方法
1. 基本思想
因为
y(xi1) y(xi )
xi1 f (x, y(x))dx
xi
y(xi ) hf ( , y( ))
y(xi ) hK
其中K=f(,y())称为y(x)在[xi,xi+1]上的平均斜率。
K2 f (xi ph, yi phK1) y( x) d f ( x, y)
首先希望能确定系数 1、2、p,使得dx到的算法格式有2阶
精度,即在 yi y( xi ) 的前提假设下,fx使( x,得y)
Step
1:

Ri K2 在 (
y( xi ,
xyii)1点) 作yiT1ayloOr (展hf开3x)( x,yi1yi

h
1 2
K1

1 2
K
2

K1 f (xi , yi )
K2 f ( xi h, yi hK1 )
斜率 一定取K1 K2 的平均值吗?
2019/9/9
步长一定是一个h 吗?
1
将改进欧拉法推广为:
yi1 yi h[1K1 2K2]
K1 f (xi, yi )
2019/9/9
3
构造高阶单步法的直接方法 • 由Taylor公式:
y(xi1) y(xi h)

y( xi
)

hy
'( xi
)

h2 2!
y "( xi
)
...

hp p!
y(
p) (xi
)

(
h p1 p 1)!
y( p1) ( )
• 当h充分小时,略去Taylor公式余项,并以yi、yi+1分别
(希望)
yi h(c1 c2 ) y' (xi ) c2a2h2 y" (xi ) O(h3 )
Step 2: 将 K2 代入第1式,得到
yi1 yi h 1 y( xi ) 2[ y( xi ) phy( xi ) O(h2 )]
2019/9/9
yi (1 2 )hy( xi ) 2 ph2 y( xi ) O(h3 )
2019/9/9
6
3. 常数的确定 确定的原则是使精度尽可能高。 以二阶为例:
yi1 yi h(c1K1 c2 K2 ) K1 f (xi , yi ) K2 f ( xi a2h, yi b21hK1)
(希望y(xi+1) – yi+1 = O(hp)的阶数p尽可能高)
可得:
yi+1 = yi + hc1 f (xi,yi) + hc2 f (xi,yi)
+ h2c2[a2 f x'(xi,yi) + b21K1 f y'(xi,yi)] + O(h3)
= yi + h(c1 + c2) f (xi,yi)
+ c2a2h2[f x'(xi,yi) + (b21/a2) f (xi,yi) f y'(xi,yi)]+O(h3)
相关文档
最新文档