常微分方程数值解法

合集下载

第七章常微分方程数值解法

第七章常微分方程数值解法

h2 h3 y ( xi 1 ) y ( xi h) y ( xi ) hy '( xi ) y ''( xi ) y '''( xi ) 2! 3!
丢掉高阶项,有
y( xi 1 ) y( xi h) y( xi ) hy '( xi ) yi hf ( xi , yi )
| f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | ,
那么模型问题在 [ a, b] 存在唯一解。
Lipschitz 连续: | f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | .
(1) 比连续性强: y1 y2 可推出 f ( x, y1 ) f ( x, y2 ) ; (2) 比连续的 1 阶导弱:具有连续的 1 阶导,则
f | f ( x, y1 ) f ( x, y2 ) || ( ) || y1 y2 | L | y1 y2 | . y
常微分方程数值解法
目标:计算出解析解 y ( x) 在一系列节点 a x0 x1 xn1 xn b 处的近似值 yi y( xi ) ,即所谓的数值解。节点间距 hi xi 1 xi ,一般 取为等距节点。
常微分方程初值问题的数值解法一般分为两大类: (1)单步法:在计算 yn 1 时,只用到前一步的值,即用到 xn1 , xn , yn ,则给定初
值之后,就可逐步计算。例如 Euler 法、向后欧拉法、梯形公式、龙格-库塔法;
(2) 多步法: 这 类 方 法 在 计算 yn 1 时 , 除 了 用 到 xn1 , xn , yn 外 , 还 要 用到

常微分方程数值解法

常微分方程数值解法

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

第7章 常微分方程数值解法

第7章  常微分方程数值解法

代入(6―3)式得
h yi 1 yi [ f ( xi , yi ) f ( xi 1 , yi 1 )] 2 i 0,1, 2, , n 1
(6―5)
这样得到的点列仍为一折线,只是用平均斜率 来代替原来一点处的斜率。式(6―5)称为改进的欧拉 公式。
不难发现,欧拉公式(6―3)是关于yi+1 的显式,只
h y xi 1 yi 1 f xi 1 , y xi 1 f xi 1 , yi 1 2 (6―15) h 3 '' f 12
因此
hL h3 y ( xi 1 ) yi 1 y ( xi 1 ) yi 1 f ( ) 2 12 h3 (1 q) y ( xi 1 ) yi 1 f ( ) 12 y ( xi 1 ) yi 1 O ( h 3 )
c 并取 yi 1 yi(1)
(6―7)
虽然式(6―7)仅迭代一次,但因进行了预先估计,
故精度却有较大的提高。 在实际计算时,还常常将式(6―7)写成下列形式:
k1 f ( xi , yi ) k f ( x h, y hk ) i i 1 2 h yi 1 yi 2 (k1 k2 ) i 0,1, 2,
在进行误差分析时,我们假设yi=y(xi),考虑用
yi+1 代替y(x
i+1)而产生截断误差,确定欧拉公式和改
进的欧拉公式的精确度。 设初值问题(6―1)的准确解为y=y(x),则利用泰 勒公式
y ( xi 1 ) y ( xi h ) h2 y ( xi ) hy ( xi ) y ( xi ) 2! h3 y ( xi ) 3!

常微分方程的数值解法

常微分方程的数值解法
第九章 常微分方程的数值解法
主要内容
§1、引言 §2、初值问题的数值解法--单步法 §3、龙格-库塔方法 §4、收敛性与稳定性 §5、初值问题的数值解法―多步法 §6、方程组和刚性方程 §7、习题和总结
§1、 引 言 主要内容 ➢研究的问题 ➢数值解法的意义
1.什么是微分方程 ? 现实世界中大多数事物
使得对任意的x [a,b]及y1, y2都成立
则称 f (x,y) 对y 满足李普希兹条件,L 称为 Lipschitz常数.
就可保证方程解的存在唯一性
若 f (x,y) 在区域 G连续,关于y
满足李普希兹 条件
一阶常微分方程的初值问题的解存在且唯一. 我们以下的讨论,都在满足上述条件下进行.
一阶常微分方程组常表述为:
y(x0
)
y0
(1.2)
种 数 值 解

其中f (x,y)是已知函数,(1.2)是定解条件也称为 初值条件。
常微分方程的理论指出:
当 f (x,y) 定义在区域 G=(a≤x≤b,|y|<∞)
若存在正的常数 L 使:
(Lipschitz)条件
| f (x, y1) f (x, y2) | L | y1 y2 | (1.3)
节点 xi a ihi,一般取hi h( (b a) / n)即等距
要计算出解函数 y(x) 在一系列节点
a x0 x1 xn b
处的近似值 yi y(xi )
y f (x, y)
y
(
x0
)
y0
a xb
(1.1) (1.2)
对微分方程(1.1)两端从 xn到xn1 进行积分
内部联系非常复杂
其状态随着 时间、地点、条件 的不同而不同

常微分方程数值解法

常微分方程数值解法

ρ ρ
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的取值。

常微分方程数值解法

常微分方程数值解法

欧拉方法
总结词
欧拉方法是常微分方程数值解法中最基础的方法之一,其基本思想是通过离散化时间点上的函数值来 逼近微分方程的解。
详细描述
欧拉方法基于微分方程的局部线性化,通过在时间点上逐步逼近微分方程的解,得到一系列离散点上 的近似值。该方法简单易行,但精度较低,适用于求解初值问题。
龙格-库塔方法
总结词
影响
数值解法的稳定性对计算结果的精度和可靠 性有重要影响。
判断方法
通过分析数值解法的迭代公式或离散化方法, 判断其是否具有稳定性和收敛性。
数值解法的收敛性
定义
数值解法的收敛性是指随着迭代次数的增加, 数值解逐渐接近于真实解的性质。
影响
数值解法的收敛性决定了计算结果的精度和 计算效率。
分类
根据收敛速度的快慢,可以分为线性收敛和 超线性收敛等。
判断方法
通过分析数值解法的迭代公式或离散化方法, 判断其是否具有收敛性。
误差分析
定义
误差分析是指对数值解法计算过程中 产生的误差进行定量分析和估计的过 程。
分类
误差可以分为舍入误差、截断误差和 初始误差等。
影响
误差分析对于提高计算精度和改进数 值解法具有重要意义。
分析方法
通过建立误差传递公式或误差估计公 式,对误差进行定量分析和估计。
生物学
生态学、生物种群动态和流行病传播 等问题可以通过常微分方程进行建模
和求解。
化学工程
化学反应动力学、化学工程流程模拟 等领域的问题可以通过常微分方程进 行描述和求解。
经济学
经济系统动态、金融市场模拟和预测 等问题可以通过常微分方程进行建模 和求解。
02 常微分方程的基本概念
常微分方程的定义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

i.常微分方程初值问题数值解法常微分方程初值问题的真解可以看成是从给定初始点出发的一条连续曲线。

差分法是常微分方程初值问题的主要数值解法,其目的是得到若干个离散点来逼近这条解曲线。

有两个基本途径。

一个是用离散点上的差商近似替代微商。

另一个是先对微分方程积分得到积分方程,再利用离散点作数值积分。

i.1 常微分方程差分法考虑常微分方程初值问题:求函数()u t 满足(,), 0du f t u t T dt=<≤ (i.1a ) 0(0)u u = (i.1b)其中(,)f t u 是定义在区域G : 0t T ≤≤, u <∞上的连续函数,0u 和T 是给定的常数。

我们假设(,)f t u 对u 满足Lipschitz 条件,即存在常数L 使得121212(,)(,), [0,]; ,(,)f t u f t u L u u t T u u -≤-∀∈∈-∞∞ (i.2) 这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值0u 。

通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。

本章讨论常微分方程最常用的近似数值解法-差分方法。

先来讨论最简单的Euler 法。

为此,首先将求解区域[0,]T 离散化为若干个离散点:0110N N t t t t T -=<<<<= (i.3) 其中n t hn =,0h >称为步长。

在微积分课程中我们熟知,微商(即导数)是差商的极限。

反过来,差商就是微商的近似。

在0t t =处,在(i.1a )中用向前差商10()()u t u t h -代替微商du dt ,便得 10000()()(,())u t u t hf t u t ε=++如果忽略误差项0ε,再换个记号,用i u 代替()i u t 便得到1000(,)u u hf t u -=一般地,我们有1Euler (,), 0,1,,1n n n n u u hf t u n N +=+=-方法: (i.4) 从(i.1b) 给出的初始值0u 出发,由上式可以依次算出1,,N t t 上的差分解1,,N u u 。

下面我们用数值积分法重新导出 Euler 法以及其它几种方法。

为此,在区间1[,]n n t t +上积分常微分方程(i.1a ),得11()()(,())n n t n n t u t u t f t u t dt ++=+⎰ (i.5)用各种数值积分公式计算(i.5)中的积分,便导致各种不同的差分法。

例如,若用左矩形公式就得到 Euler 法(i.4)。

如果用右矩形公式,便得到下面的:111Euler (,), 0,1,,1n n n n u u h f t u n N +++=+=-隐式方法: (i.6) 类似地,如果用梯形公式,就得到111E u l e r [(,)(,)], 0,1,,12n n n n n n hu u f t u f t u n N +++=++=-改进的方法 (i.7) 当(,)f t u 关于u 是非线性函数的时候,不能由(i.6)或 (i.7) 从n u 直接算出1n u +,称这一类方法为隐式,通常采用某种迭代法求解。

例如,将一般的隐式方法写成11(,,)n n n n u F t u u ++= (i.8) 则可以利用如下的迭代法由n u 算出1n u +:11101(,,), 0,1, k k n n n n n n u F t u u k u u ++++⎧==⎨=⎩ (i.9)关于k 的迭代通常只需进行很少几步就可以满足精度要求了。

为了避免对隐式方法进行迭代的麻烦,比如说对于改进的Euler 方法(i .7),可以采用某种预估法近似算出11(,)n n f t u ++,然后再用(i .7)作校正,这就导致所谓预估校正法。

下面给出一个例子: 1111111(,)2(,)()2n n n n n n n n n n n n n u f t u u u hu u f t u h u u u u +-+++++'⎧=⎧⎪⎪'=+⎨⎪⎪⎪'=⎨⎩⎪⎪''=++⎪⎩预估: 校正: (i.10) 这是一个多步法,即计算节点1n t +上的近似值1n u +时,除了用到前一点的近似值n u 之外,还要用到1n u -,甚至可能用到2,n u -。

而用前面的各种Euler 法计算节点1n t +上的近似值1n u +时,只用到n u ,这样的方法称之为单步法。

下面给出另一个多步法的例子。

在区间2[,]n n t t +上积分(i.1a ),得22()()(,())n n t n n t u t u t f t u t dt ++=+⎰用Simpson 公式(即把被积函数看作二次函数)近似计算积分,便得到212M i l n e (4), 0,1,,23n n n n n hu u f f f n N +++=+++=-法: (i.11) 用多步法(i.10)或(i.11)计算时,必须先用某种单步法由0u 计算出1u ,称为造表头。

然后再逐次算出23,,,N u u u 。

一般说来,多步法比Euler 法等简单的单步法精度要高一些。

下面我们讨论一类所谓Runge-Kutta 法。

他们是单步法,但是其精度可以与多步法比美。

最常用的是下面的标准Runge-Kutta 法和Gear 法:标准Lunge-Kutta 法⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧++++=++=++=++==+)22(6),()2,2()2,2(),(432113423121K K K K h u u hK u h t f K hK u h t f K hK u h t f K u t f K n n n n n n n n n n (i.12)11231242311234(,)(,)22111(,)(1)) Gear 222211(,()(1))22111(2(1)2(1))622n n n n n n n n n n K hf t u K h K hf t u h K hf t u K K K hf t h u K K u u K K K K +=⎧⎪⎪=++⎪⎪-⎪=++++-⎪⎨⎪⎪=++-++⎪⎪⎪=++-+++⎪⎩(方法: (i.13) 从几何上, Runge-Kutta 法可以粗略地解释为:在区间1[,]n n t t +中选取若干个点(可以重复)1211n k k n t t ττττ-+=<≤≤≤=,仅仅利用在区间1[,]n n t t +内可以得到的所有信息,依次给出函数(,())f t u t 在这些点上尽可能精确的的近似值12,,,k K K K ,然后把它们组合起来,尽可能精确地近似计算(i.5)中的积分。

下面介绍Runge-Kutta 法的一般构造方式。

选定常数k ,令1(,)n n K f t u =22211(,)n n K f t h u K αβ=++ 3331132(,)n n K f t h u K K αββ=+++1122,11(,)k n k n k k k k k K f t h u K K K αβββ--=+++++ 11122()n n k k u u h K K K ωωω+=++++ (i.14) 选取这些待定常数,,i ij m αβω的原则是:将(i.14)在(,)n n t u 作Taylor 展开,然后按照h 的幂重新整理,使得231123112!31n n u u h h h γγγ+=++++ (i.15) 与微分方程(i.1a )的解()u u t =在n t t =处的Taylor 展式23111()()2!3!n n n n n u t u t f h f h f h +'''=++++ (i.16) 有尽可能多的项重合,即要求123, , ,n n n f f f γγγ'''=== 这里(,)(,)(,)(,), n n n n n n t u t u df t u f f t u f dt ='==等等。

按照(i.14)构造出的都是显式Runge-Kutta 方法,每一个i K 可以依次显式地算出。

如果在某一个i K 的表达式中出现j K ,其中j i >,则导致隐式Runge-Kutta 方法,可以迭代求解。

一般来说,隐式Runge-Kutta 方法的稳定性更好一些。

i.2 常微分方程组与高阶常微分方程先来考虑下面的常微分方程组初值问题11122212121100(,,,,)(,,,,)(,,,,)(0),,(0)m m mm m m m du f t u u u dtdu f t u u u dt du f t u u u dtu u u u ⎧=⎪⎪⎪=⎪⎪⎨⎪⎪=⎪⎪⎪==⎩(i.17)利用向量记号,上式可以改写为0()(,)(0)t t u '=⎧⎨=⎩u f u u (i.18) 上节中各方法都可以直接应用到常微分方程组(i.18)。

例如,Euler 方法成为1(,), 0,1,,1n n n n h t n N +=+=-u u f u再来考虑高阶常微分方程 111211(,,,,), 0(0),,(0),(0)m m m m m m m d u du d u f t u t dt dt dt d u du v v u v dt dt ----⎧=>⎪⎪⎨⎪===⎪⎩ (i.19) 这时,可以令1121(,,,)(,,)m m m du d u u u u u dt dt --=≡u (i.20) 231212(,,,)(,,,,(,,,,))m m m f f f u u u f t u u u ==f (i.21)012(,,,)m v v v =u (i.22)于是可以把高阶常微分方程(i.19)化成一阶常微分方程组(i.18)。

i.3 收敛性与稳定性截断误差 粗略地说,截断误差可以定义为将微分方程解带入到差分方程后得到的误差,代表了微分方程与差分方程之间的误差。

例如,由Taylor 展式和微分方程(i.1a)得到221(,())()()()()()(,())2!2!nn n n n n n n t h h df t u t u t u t hu t u u t hf t u t dt ττ+='''=++=++ 其中n τ是区间1[,]n n t t +上某个常数。

与Euler 法1(,)n n n n u u hf t u +=+相比较,定义余项2(,())2!nt h df t u t dt τ=为Euler 法的截断误差,它关于h 是2阶的,记为2()h O 。

相关文档
最新文档