常微分方程初值问题的数值解法
常微分方程初值问题数值解法
常微分方程初值问题的数值解法在自然科学、工程技术、经济和医学等领域中,常常会遇到一阶常微分方程初值问题:(,),,(),y f x y a x b y a y '=≤≤⎧⎨=⎩ (1) 此处f 为,x y 的已知函数,0y 是给定的初始值。
本章讨论该问题的数值解法,要求f 在区域{(,)|,}G x y a x b y =≤≤<∞内连续,并对y 满足Lipschitz 条件,从而初值问题(1)有唯一的连续可微解()y y x =,且它是适定的。
1 几个简单的数值积分法1.1 Euler 方法(1)向前Euler 公式(显式Euler 公式)10(,),0,1,2,,(),n n n n y y hf x y n y y a +=+=⎧⎨=⎩(2) 其中h 为步长。
由此便可由初值0y 逐步算出一阶常微分方程初值问题(1)的解()y y x =在节点12,,x x 处的近似值12,,y y 。
该公式的局部截断误差为2()O h ,是一阶方法。
(2)向后Euler 公式(隐式Euler 公式)1110(,),0,1,2,,(),n n n n y y hf x y n y y a +++=+=⎧⎨=⎩(3) 这是一个隐格式,也是一阶方法。
这类隐格式的计算比显格式困难,一般采用迭代法求解。
首先用向前Euler 公式提供迭代初值,然后迭代计算:(0)1(1)()111(,),(,),0,1,2,n n n n k k n n n n y y hf x y y y hf x y k +++++⎧=+⎨=+=⎩ (4)1.2 梯形方法1110[(,)(,)],2(),(0,1,2,)n n n n n n h y y f x y f x y y y a n +++⎧=++⎪⎨⎪=⎩= (5) 这也是一个隐格式,是二阶方法。
一般也采用迭代法求解。
迭代公式如下:(0)1(1)()111(,),[(,)(,)],0,1,2,2n n n n k k n n n n n n y y hf x y h y y f x y f x y k +++++⎧=+⎪⎨=++=⎪⎩ (6)1.3 改进的Euler 方法11110(,),[(,)(,)],0,1,2,,2(),n n n n n n n n n n y y hf x y h y y f x y f x y n y y a ++++⎧=+⎪⎪=++=⎨⎪=⎪⎩(7) 为了便于上机编程计算,(7)可改写为110(,),(,),0,1,2,,1(),2(),p n n n cn n p n p c y y hf x y y y hf x y n y y y y y a ++=+⎧⎪=+⎪⎪=⎨=+⎪⎪=⎪⎩(8) 该格式是显式,也是二阶方法。
浅谈常微分方程初值问题数值解法
浅谈常微分方程初值问题数值解法在自然科学、工程技术、甚至社会科学的一些领域中,常常会遇见一阶常微分方程的求解问题:()上述问题,寻求解的具体表达式十分困难,仅对一些特殊形式的才有可能找到解的解析表达式,在大多情况下,初值问题的解不能用初等函数表示出来即使可写出解的解析表达式,但因为这些表达式过于复杂,要计算它在某些点上的函数值也异常困难。
在实际问题中,经常需要的恰是解在某些点上的函数值,因此研究初值问题的数值解法十分必要。
1 常微分方程初值问题的数值解法常微分方程的近似解法大体可分成三大类:一类是图解法和器械法;第二类是解的近似法;第三类是数值解法,即通过离散化的方法直接求出函数在某些点上的近似值,此数值解仅为精确解的近似解。
其基本原理为:一阶常微分方程的初值问题的解是上变量的连续函数,因此求上述问题的数值解,就是在区间上的若干离散点上用离散化的方法将初值问题化成离散变量的相应问题,从而相应问题的解可作为初值问题理论解的近似值。
由常微分方程的理论可知,只要在区域内连续,且关于满足林普希兹条件,则方程的解存在且唯一。
初值问题的数值解法通常采取“步进法”,而“步进法”又可分为“单步法”和“多步法”两类。
(1)单步法。
所谓“单步法”是指在计算时,只用到前一步的有关信息。
其一般形式为:,主要包括下面三种方法:Euler方法,改进的Euler公式-梯形公式和Runge-Kutta法。
(2)线性多步法。
单步法没有用到前几步计算得到的信息,因此为了提高精度,需重新计算多个点处的函数数值,如RK方法,故计算量较大。
线性多步法的基本思想是充分利用前面的已知信息来构造精度高且计算量小的算法来计算。
多步法常用方法是线性多步法,求解公式为:构造的常用方法是Taylor展开和数值积分方法。
常用的线性多步公式有:四阶Adams显式公式:四阶Adams隐式公式:四阶Milne显式公式:三阶Hamming公式:(隐式公式)预测校正系统和预测校正修正法:一般地,同阶的隐式法比显式法精确,而且数值稳定性好,但隐式公式中的求解较难,需要用到迭代法,这就增加了计算量。
常微分方程初值问题数值解法
数值解法的必要性
实际应用需求
许多实际问题需要求解常微分方程初值问题,如物理、 化学、生物、工程等领域。
解析解的局限性
对于复杂问题,解析解难以求得或不存在,因此需要 采用数值方法近似求解。
数值解法的优势
未来发展的方向与挑战
高精度算法
研究和发展更高精度的算法,以提高数值解的准确性和稳定性。
并行计算
利用并行计算技术,提高计算效率,处理大规模问题。
自适应方法
研究自适应算法,根据问题特性自动调整计算精度和步长。
计算机技术的发展对数值解法的影响
1 2
硬件升级
计算机硬件的升级为数值解法提供了更强大的计 算能力。
它首先使用预估方法(如欧拉方法)得到一个 初步解,然后使用校正方法(如龙格-库塔方法) 对初步解进行修正,以提高精度。
预估校正方法的优点是精度较高,且计算量相 对较小,适用于各种复杂问题。
步长与误差控制
01
在离散化过程中,步长是一个重要的参数,它决定 了离散化的精度和计算量。
02
误差控制是数值逼近的一个重要环节,它通过设定 误差阈值来控制计算的精度和稳定性。
能够给出近似解的近似值,方便快捷,适用范围广。
数值解法的历史与发展
早期发展
早在17世纪,科学家就开始尝 试用数值方法求解常微分方程。
重要进展
随着计算机技术的发展,数值 解法在20世纪取得了重要进展, 如欧拉法、龙格-库塔法等。
当前研究热点
目前,常微分方程初值问题的 数值解法仍有许多研究热点和 挑战,如高精度算法、并行计
软件优化
软件技术的发展为数值解法提供了更多的优化手 段和工具。
微分方程初值问题的数值解法
积分法:
yk 1 yk h f ( xk , yk ) y ( x0 ) y0
积分项利用矩形公式计算
(1) y( xk 1 ) y( xk )
xk 1
xk
f (t , y(t ))dt
(★)
xk 1
xk
f (t , y(t ))dt h f ( xk , yk ) y( xk 1 ) y( xk ) h f ( xk , yk )
引言
初值问题的数值解法:求初值问题的解在一系列节点的值 y ( xn )的近似值 yn 的方法.本章数值解法的特点:都是采用“步进 式”,即求解过程顺着节点排列的次序一步步向前推进. 常微分方程初值问题: dy f ( x, y ), x [a, b] dx y ( x0 ) y0
替 f (x , y)关于 y 满足Lipschitz条件. 除了要保证(1)有唯一解外,还需保证微分方程本身是稳定的,即 (1)的解连续依赖于初始值和函数 f (x , y). 也就是说, 当初始值 y0 及函数 f (x , y)有微小变化时, 只能引起解的微小变化.
注: 如无特别说明,总假设(1)的解存在唯一且足够光滑. 在 f 连续有界, 则 f (x , y)对变量 y 可微的情形下, 若偏导数 y 可取L为
也称折线法 x
2. 梯形法
若采用梯形公式计算(★)中的积分项,则有 h y ( xk 1 ) y ( xk ) [ f ( xk , y ( xk )) f ( xk 1 , y ( xk 1 ))] 2 h yk 1 yk [ f ( xk , yk ) f ( xk 1 , yk 1 )] 2 称之为梯形公式.这是一个隐式公式,通常用迭代法求解.具体做 法: (0) (0) 先用Euler法求出初值 yk ,1 即 ,将其代入梯形公式 yk 1 yk h f ( xk , yk ) 的右端,使之转化为显式公式,即 h ( l 1) (l ) yk 1 yk [ f ( xk , yk ) f ( xk 1 , yk (☆ ) 1 )] 2
第五章 常微分方程初值问题数值解法
则有
yn 1 yn hf ( xn , yn )
( 5.2 ) Euler格式
例5.1 用Euler格式解初值问题
2x y y y y (0) 1
取步长h=0.1.
(0 x 1)
Euler格式的具体形式为
y n 1 y n hf ( x n , y n ) 2 xn yn 0.1( yn ) yn 0.2 xn 1.1 yn yn
计算公式的精度 常以Taylor展开为工具来分析计算公式的精度. 为简化分析,假定yn是准确的,即在 yn y ( xn ) 的前提下估计误差 y ( xn 1 ) yn 1 Euler格式的局部截断误差 由 从而 局部截断误差
f ( xn , yn ) f ( xn , y ( xn )) y '( xn ) y ( xn 1 ) yn 1 y ( xn 1 ) ( yn hf ( xn , yn )) y ( xn 1 ) y ( xn ) hy '( xn )
y ( xn ), y ( xn 1 ), 的近似值 y1 , y2 , , yn , yn 1 ,
相邻两个节点的间距 h xi 1 xi 称为步长,步 长可以相等,也可以不等.本章总是假定h为定数, 称为定步长,这时节点可表示为
xn x0 nh , n 0,1, 2,
由f ( xn 1 , yn 1 ) f ( xn 1 , y ( xn 1 )) f y ( xn 1 , )( yn 1 y ( xn 1 )) f ( xn 1 , y ( xn 1 )) y '( xn 1 )(在xn点Taylor展开) h2 y '( xn ) hy ''( xn ) y '''( xn ) ... 2 3 2 h h 因此yn 1 y ( xn ) hy '( xn ) y ''( xn ) y '''( xn ) 2 4 h f y ( xn 1 , )( yn 1 y ( xn 1 )) 2 h2 h3 y ( xn 1 ) y ( xn ) hy '( xn ) y ''( xn ) y '''( xn ) 2 3!
常微分方程初值问题的数值解法中三种算法的比较
常微分方程初值问题的数值解法中三种算法的比较
常微分方程初值问题的数值解法是数学分析中的一个重要的研究内容,众多的
算法都有助于我们更好地求解一般的初值问题,在这里我们将介绍常微分方程初值问题的三种基本算法,它们是欧拉法、改进欧拉法以及四阶龙格-库塔法。
欧拉法是常微分方程初值问题中最常用的算法,他是一种简洁而又灵活的方法,其基本思想是根据给定的常微分方程和初值,通过积分形式求解精确解,此方法解决的问题比较简单,但它的误差公式与时间步长的N次方有关,误差较大,而且容易出现严重的误差误差,当时间步长To增大时会出现误差振荡。
改进欧拉法是弥补欧拉法缺陷的一种优化算法,它使用线性插值,代替欧拉法
用积分形式计算出来的结果,从而更准确地求出结果,且误差降低,由于它对动态系统的误差有一定的抑制,使得它的运算误差相对于欧拉法是高准确度的,但在某些特殊情况下仍然可能出现误差波动的情况。
四阶龙格-库塔法是在现实生活中最常用的数值解法。
它把问题分解成5种不
同形式的积分公式,并分别交由5个层次的方法来解决,仔细把握每一步的运算,把数值舍入后再运算,虽然该法运算量大,但它的准确性更高,误差相对于其它两种方法要小得多,且具有良好的精度稳定性,具有很好的鲁棒性和适应性,可以很好地用于对解初值问题作出估计和预测。
综上,这三种数值解法都有自身的特点,欧拉法计算简单,但误差较大;改进
欧拉法的精度和误差抑制能力更强;四阶龙格-库塔法的算术精度更高,出现误差
波动的概率最低,在可靠性方面更加准确。
因此,应用的时机对于三种算法的选择就显得尤为重要。
常微分方程初值问题的数值解法
第七章 常微分方程初值问题的数值解法--------学习小结一、本章学习体会通过本章的学习,我了解了常微分方程初值问题的计算方法,对于解决那些很难求解出解析表达式的,甚至有解析表达式但是解不出具体的值的常微分方程非常有用。
在这一章里求解常微分方程的基本思想是将初值问题进行离散化,然后进行迭代求解。
在这里将初值问题离散化的方法有三种,分别是差商代替导数的方法、Taylor 级数法和数值积分法。
常微分方程初值问题的数值解法的分类有显示方法和隐式方法,或者可以分为单步法和多步法。
在这里单步法是指计算第n+1个y 的值时,只用到前一步的值,而多步法则是指计算第n+1个y 的值时,用到了前几步的值。
通过对本章的学习,已经能熟练掌握如何用Taylor 级数法去求解单步法中各方法的公式和截断误差,但是对线性多步法的求解理解不怎么透切,特别是计算过程较复杂的推理。
在本章的学习过程中还遇到不少问题,比如本章知识点多,公式多,在做题时容易混淆,其次对几种R-K 公式的理解不够透彻,处理一个实际问题时,不知道选取哪一种公式,通过课本里面几种方法的计算比较得知其误差并不一样,,这个还需要自己在往后的实际应用中多多实践留意并总结。
二、本章知识梳理常微分方程初值问题的数值解法一般概念步长h ,取节点0,(0,1,...,)n t t nh n M =+=,且M t T ≤,则初值问题000'(,),()y f t y t t Ty t y =≤≤⎧⎨=⎩的数值解法的一般形式是1(,,,...,,)0,(0,1,...,)n n n n k F t y y y h n M k ++==-@显示单步法7.2.1 显示单步法的一般形式1(,,),(0,1,...,1)n n n n y y h t y h n M ϕ+=+=-定理7.2.1 设增量函数(,,)n n t y h ϕ在区域00{(,,)|,||,0}D t y h t t T y h h =≤≤<∞≤≤内对变量y 满足Lipschitz 条件,即存在常数K ,使对D 内任何两点1(,,)t u h 和2(,,)t u h ,不等式1212|(,,)(,,)|||t u h t u h K u u ϕϕ-≤-成立,那么,若单步法的局部截断误差1n R +与1(1)p h p +≥同阶,即11()p n R O h ++=,则单步法的整体截断误差1n ε+与p h 同阶,即1()p n O h ε+=。
常微分方程初值问题的数值解法
常微分方程初值问题数值解法初值问题:即满足初值条件的常微分方程的解y′=f(x,y),x∈[x0,b]y(x0)=y0.定理1(利普希茨条件)若存在正数L,使得对任意,y1,y2,有|f(x,y1)−f(x,y2)|≤L|(y1−y2)|定理2(解存在性)①若函数f在方区域x∈[a,b],y∈R连续,②函数f关于y 满足利普希茨条件,则对任意x∈[a,b],常微分方程存在唯一的连续可微数值解.两类问题:①单步法---计算下一个点的值yn+1只需要用到前面一个点的值yn②多步法---计算下一个点的值yn+1需要用到前面l个点的值yl1、欧拉法---下一个点的计算值等于前一个点的计算值加上步长乘以前一个点的函数值•具体过程一些批注:显式欧拉方程指下一步要计算的值,不在迭代方程中;隐式欧拉方程指下一步要计算的值,在迭代方程中。
怎么计算隐式欧拉方程----要借助显示欧拉迭代计算---一般用迭代法-----迭代---将微分方程在区间[xn,xn+1]进行积分,然后函数f进行近似,即可得到迭代方程-----迭代方程收敛性?由函数关于y满足利普希茨条件,可以推出迭代公式收敛。
•局部截断误差:假设前n步误差为0,我们计算第n+1步的误差,将次误差称为局部截断误差,且局部误差为O(hp+1)•p阶精度:由理论证明:若局部误差阶的时间复杂度为O(hp+1),则整体误差阶为O(hp)我们称公式精度为p。
•显示欧拉法与隐式欧拉法•梯形方法----将显式欧拉迭代方程与隐式欧拉迭代方程做一下加权平均,构造的计算公式.•改进的欧拉方法---思想:因为梯形公式是隐式公式,将显式欧拉公式对下一步的计算值进行预估,用梯形公式对下一步的计算值进行校正.2、龙格-库塔方法思想:根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以前一个点的斜率;而这个斜率用该区间上的多个点的斜率的算数平均来逼近。
注意:怎么计算任意斜率Ki?第i个点的斜率Ki有微分方程可以算出f′=f(xn,yn)所以要算的f(xn,yn)值,由欧拉法即可算出, yn+1=yn+hf′•2阶-龙格-库塔方法----类似改进的欧拉法根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以斜率;而这个斜率用区间上的端点和中点的斜率的算数平均来逼近。
数值分析 李庆扬 第9章 常微分方程初值问题数值解法
2017年1月4日
《数值分析》 黄龙主讲
讨论迭代的收敛性:
因函数
f x , y 对 y 满足利普希茨条件
f x , y1 f x , y2 L y1 y2 , y1 , y2 R
比较欧拉的后退公式和其 k 1 次迭代结果
yn1 yn h f xn1 , yn1
k 1 k yn y h f x , y 1 n n1 n1
两式相减得
k 1 k k yn y h f x , y f x , y hL y 1 n1 n1 n1 n1 n1 n1 yn1
由此可知:只要 hL 1 迭代法就收敛到解
yn1 时,只用到前一点的值 yn
k 步法:计算 yn1 时,用到前面 k 点的值 yn , yn1 , , ynk 1
5
2017年1月4日
《数值分析》 黄龙主讲
9.2
9.2.1
简单的数值方法
欧拉法与后退欧拉法
初值问题:
y f x , y
y x0 y0
解的形式:
由利普希茨条件,有
yn1 yn1
若选取 h 充分小,使得
20
k 1
hL k yn1 yn1 2
k hL 2 1 ,则 k 时有 yn1 yn1
2017年1月4日
《数值分析》 黄龙主讲
9.2.3
改进欧拉公式
① 先用向前欧拉公式,求得一个初步的近似值 预测:
称
f 关于 y 满足利普希茨条件, L 为 f 的利普希茨常数。
常微分方程初值问题的数值解法
就得到初值问题(7.1),(7.2)的解y(t )的解析表达式。然而
在实际问题和科学研究中所遇到的微分方程往往很复
杂,很多情况下不可能求出它的解析解。有时侯即使
能求出解析解,也会由于很难从解析解中计算函数y(t )
的值而不实用。
例如,容易求出初值问题
y' 1 y cos t,0 t T
注意:这是“折
线法”而非“切
yN
线法”除第一个
点是曲线切线外,
其他点不是切线
而是折线(如右 图所示)。
y2 yy10
t0 a t1 t2
tN b x
§7.2.1 显式单步法的一般形式 显式单步法的一般形式是
yn1 yn h (tn , yn , h), n 0,1, , M 1 (7.2.4)
普希兹)条件。常数L称为函数f 在D0中的Lipschitz常数。
例1 函数f (t, y) t y 在区域D0 (t, y) | 1 t 2, 3 y 4
关于y满足Lipschitz条件,相应的Lipschitz常数可取为L 2
3 存在性定理 定理1 设函数f (t, y)在凸集D R2中有定义,若存在常数
(7.4)
若k 2,则数值解法(7.3)统称为多步法,或具体称 为k步法。
显示法、隐式法与截断误差 若在差分方程(7.3)中,ynk能表示为tn , yn, yn1, , ynk-1, h 的显函数,即
ynk G(tn , yn , yn1, , ynk-1, h), n 0,1, , M - k (7.5)
y0 yn1
Hale Waihona Puke y(t0 yn)
第7章-常微分方程初值问题的数值解法
由 点 斜 式 写 出 切 线 方 程 :
dy yy0(xx0)dx(x0,y0) y0(xx0)f(x0,y0)
等 步 长 为 h , 则 x x 0 h , 可 由 切 线 算 出 y 1
y1y0hf(x0,y0)
2021/4/9
10
其 中 , y n 1 是 当 y n y (x n )(精 确 解 )时 由 E u le r法 求 出 的 值 , 即 y n 无 误 差 。
将 y (x n 1 )在 x n 点 T a y lo r展 开 :
y (x n 1 ) y (x n h ) y (x n ) h f(x n ,y (x n )) (h 2 x2 n y ()xn1)
ax0 x1 x2 xn b 在节点上用离散化方法将连续型微分方程 转化成离散型代数方程即差分方程来求解。
具 体 作 法 : 利 用 y(x0)求 出 y(x1)的 近 似 值 y1, 再 由
y1求 出 y2,, 直 到 求 出 yn为 止 。 该 算 法 称 为 步 进
式 或 递 推 式 算 法 。
积 分 用 梯 形 公 式 , 且 令 : yn1y(xn1),yny(xn) 则 得 : yn1ynh 2(f(xn,yn)f(xn1,yn1))
R n 1 y (x n 1 ) y n 1 1 h 2 3y () x n x n 1
与Euler法结合,形成迭代算法,对n0, 1, 2,
yn(0)1ynhf(xn,yn) (75)
y 2021/4/9
(k1) n1
ynh2(f(xn,yn)f(xn1,yn(k1))k0,1,2,
12
2. Euler方法的截断误差
计算方法课件第八章常微分方程初值问题的数值解法
整体截断误差与局部截断误差的关系
定理:如果f(x,y)满足李普希兹(Lipschitz)条件
f(x ,y 1 )f(x ,y 2) L y 1y 2
且局部截断误差有界:
|R n|1 2h2M 2
(n1,2, )
则Euler法的整体截断误差n满足估计式:
ne(ba)L 0h 2L M 2(e(ba)L1)
分光滑。初值问题的解析解(理论解)用 y(x表n ) 示, 数值解法的精确解用 y表n 示。
常微分方程数值解法一般分为:
(1)一步法:在计算y n 1 时,只用到x n 1 ,x n和 y,n 即前一步的值。
(2)多步法:计算 y n 1 时,除用到 x n 1 ,x n 和 y n 以外,还要用 x n p 和 y n p (p1 ,2 k;k0) ,即前
其中L为李普希兹常数,b-a为求解区间长度,
M2 mayx(x) 。 axb
证明参见教材。
Remark:该定理表明,整体截断误差比局部截 断误差低一阶。对其它方法,也有类似的结论。
收敛性与稳定性
收敛性定义:如果某一数值方法对于任意固定的
xn=x0+nh,当h0(同时n )时有yn y(xn),
则称该方法收敛。 稳定性定义 定义 用一个数值方法,求解微分方程初值问 题时,对给定的步长h>0,若在计算 y n 时引入 误差 (n 也称扰动),但由此引起计算后面的 ynk(k1,2, )时的误差按绝对值均不增加,则 称这个数值方法是稳定的。
一般的显式rk方法可以写成型钢截面只需少量加工即可用作构件省工省时成本低但型钢截面受型钢种类及型钢号限制难于完全与受力所需的面积相对应用料较多其中为常数选取这些常数的原则是要求第一式的右端在处泰勒展开后按h型钢截面只需少量加工即可用作构件省工省时成本低但型钢截面受型钢种类及型钢号限制难于完全与受力所需的面积相对应用料较多上述公式叫做n级的rungekutta方法其局部截断误差为显然euler法是一级一阶rk方法
第一章常微分方程初值问题数值解法
(1.2.3)
其中rn,k(t)为插值余项。 代到(1.2.2)式中得
u ( tn +1 ) = u ( tn ) +
舍去余项 并用uj代替u(tj)即得
∫
tn+1 tn
Ln , k ( t ) dt + ∫ t rn , k ( t ) dt
tn+1
n
(1.2.4 (1.2.5)
Rn , k = ∫
⎡ ∑ ⎣α u
j =0
j =0
αk ≠ 0
(1.2.1)
j n+ j
⎤ − hβ j f n + j ⎦ = 0(数值解满足的差分方程)
因此称(1.2.1)为多步法 或 k-步法。 又因为(1.2.1)关于 u n + j , f n + j 是线性的,所以称为线性多步法。 为使多步法的计算能够进行,除给定的初值u0 外,还要 知道附加初值u1,u2,…,uk-1 ,这可用其它方法计算。 若 β k = 0 则称(1.2.1)是显式的; 若 β k ≠ 0 则方法(1.2.1)是隐式的。 例如,一般线性二步法可写成:
f ( t , u ( t ) ) = Ln , k +1 ( t ) + rn , k +1 ( t )
其中rn,k+1(t)为插值余项。 同理即
un +1 = un + h ∑ bk +1i f ( tn −i +1 , un −i +1 )
i =0
k +1
其中
bk +1i
=∫ ∏
−1
j =0 j ≠i
0
k +1
9、常微分方程初值问题数值解法
( k +1) yn +1
xn +1 ∫xn
− yn +1 |≤
hL 2
|
(k ) yn +1
− yn +1 |,
( 只要 hL < 1,则( 2.8)的ynk +1)收敛到(2.7)的yn +1. +1 2
三、单步法的局部截断误差与阶
一阶常微分方程初值问题(1.1)(1.2)的单步法的一般形式 yn +1 = yn + hϕ ( xn , yn , yn +1, h).
clear x=0,yn=1 %初始化 for n=1:10 yp=yn+0.1*(yn-2*x/yn); %预测 x=x+0.1; yc=yn+0.1*(yp-2*x/yp) ; yn=(yp+yc)/2 %校正 end
( 2.2)
作业: 作业:P381, 1, 2(1).
龙格—库塔 库塔(Runge-Kutta)法 §3 龙格 库塔 法
进一步 y ( xn +1 ) = y ( xn ) + ∫
xn +1 xn
f ( x, y ( x))dx,
(Байду номын сангаас.3)
∫
⇒ 其中
xn +1 xn
f ( x, y ( x))dx ≈ h ∑ ci f ( xn + λi h, y ( xn + λi h)).
yn +1 = yn + hϕ ( xn , yn , h),
i =1
r
(3.4) (3.5) 欧拉法r = 1, p = 1.改进
常微分方程初值问题的的数值解法
本章讨论常微分方程初值问题的数值解法
2
考虑一阶常微分方程的初值问题
⎧ dy ⎪ = f ( x, y ) ⎨ dx ⎪ ⎩ y (a ) = y0
x ∈ [a, b]
只要 f (x, y) 在[a, b] × R1 上连续,且关于 y 满足 Lipschitz 条 件,即存在与 x, y 无关的常数 L 使对任意x∈[a, b] ,和y1, y2 ∈ R1 都有 | f ( x, y1) − f ( x, y2 ) | ≤ L| y1 − y2 | 在唯一解。 成立, 则上述问题存
⎧ ⎪ ⎨ ⎪ ⎩ y n +1 = yn + hf ( xn , yn ), h yn +1 = yn + [ f ( xn , yn ) + f ( xn +1 , y n +1 )] 2
改进的Euler方法:y0=1,
y1=y0+hf (x0, y0) =1.1, y1=1+01./2 ×[(1−2 ×0/1)+(1.1−2 ×0.1/1.1)] =1.095909, …… y11=…… y11=1.737869.
1 yn +1 = yn + h[ f ( xn , yn ) + f ( xn +1 , yn +1 )] 2
12
称之为梯形公式。这是一个隐式的计算公式,欲求的yn+1需 解一个方程。
3.截断误差
定义 在假设 yn = y(xn),即第 n 步计算是精确的前提下,考 虑的截断误差 εn+1 = y(xn+1) − yn+1 称为局部截断误差
⎧ y n +1 = y n + k1 ⎨ ⎩k1 = hf ( xn ,y n )
常微分方程初值问题数值解法
y ( xn ) 1.0954 1.1832 1.2649 1.3416
1.4351 1.4142
初值问题(2.2)有解 y 1 2 x ,按这个解析式子 算出的准确值 y ( xn ) 同近似值 y n一起列在表9-1中,两者 相比较可以看出欧拉方法的精度很差. 还可以通过几何直观来考察欧拉方法的精度. 假设 yn y ( xn ) ,即顶点 Pn 落在积分曲线 y y ( x) 上,那么,按欧拉方法做出的折线 Pn Pn 1 便是 y y ( x) 过点 Pn 的切线(图9-2).
yn 1 yn hf ( xn 1 , yn 1 ),
(2.5)
称为后退的欧拉法. 后退的欧拉公式与欧拉公式有着本质的区别,后者是 关于 yn 1 的一个直接的计算公式,这类公式称作是显式的;
即
yn1 yn hf ( xn , yn ). y0 r)公式. 式(2.1)可逐步算出
y1 y0 hf ( x0 , y0 ), y2 y1 hf ( x1 , y1 ),
例1
求解初值问题
2x y y y y (0) 1. (0 x 1),
n ( xn , xn 1 ).
在 yn y ( xn ) 的前提下, f ( xn , yn ) f ( xn , y( xn )) y( xn ) . 于是可得欧拉法(2.1)的公式误差
y ( xn 1 ) yn 1 h2 h2 y( n ) y( xn ), 2 2
(1.3)
y y ( x) 理论上就可以保证初值问题(1.1),(1.2)的解 存在并且唯一.
1
所谓数值解法,就是寻求解 y ( x) 在一系列离散节点
第7讲 常微分方程初值问题数值解法
yn1 yn hf ( xn1 , yn1 ) n 0,1, 2,, N 1
称上述公式为向后Euler 公式。 向后Euler 公式为隐式格式,需要利用迭代法求解
10
数值分析
第7讲 常微分方程初值问题数值解法
Euler方法的几何意义
③ 图形解
y
•龙格-库塔法
o
x
2
数值分析
第7讲 常微分方程初值问题数值解法
§1 引言 初值问题及其数值解的概念
dy f ( x , y ); a x b 一阶常微分方程初值问题: d x ( ) y( x ) y 0 0
常用的一些 解析解法:
分离变量法、变量代换、 常数变易法、Lapalace变换等
(3)
用Taylor多项式近似并可估计误差
h
2
y( x n 1 ) y( x n h) y( x n ) hy' ( x n )
y' ' ( ) h
2
2! y' ' ( x n )
y( x n ) hy' ( x n )
2!
进一步: 令
y n 1 y( x n 1 ) , y n y ( x n )
计算结果
(1)步长h=0.1的数值解比较表
x 0 0.1
0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
精确解 1 1.0048
1.0187 1.0408 1.0703 1.1065 1.1488 1.1966 1.2493 1.3066 1.3679
向前欧拉 1 1
常微分方程初值问题的数值解法
常微分方程初值问题的数值解法在实际应用中,对于某些微分方程,我们并不能直接给出其解析解,需要通过数值方法来求得其近似解,以便更好地理解和掌握现象的本质。
常微分方程初值问题(IVP)即为一种最常见的微分方程求解问题,其求解方法有多种,本文将对常微分方程初值问题的数值解法进行较为详细的介绍。
一、欧拉法欧拉法是最基本的一种数值解法,它采用泰勒级数展开并截断低阶项,从而获得一个差分方程近似求解。
具体来讲,设 t 为独立变量,y(t) 为函数 y 关于 t 的函数,方程为:$$y'(t) = f(t, y(t)), \qquad y(t_0) = y_0$$其中 f(t,y(t)) 为已知的函数,y(t_0) 为已知的初值。
将函数 y(t) 进行泰勒级数展开:$$y(t+h) = y(t) + hf(t, y(t)) + O(h^2)$$其中 h 表示步长,O(h^2) 表示其他高阶项。
为了使误差较小,一般取步长 h 尽可能小,于是我们可以用欧拉公式表示数值解:$$y_{n+1} = y_n + hf(t_n, y_n), \qquad y_0 = y(t_0)$$欧拉法的优点是容易理解和实现,但是由于截取低阶项且使用的单步法,所以误差较大,精度较低,在具体应用时需要慎重考虑。
二、龙格-库塔法龙格-库塔法(Runge-Kutta method)是一种多步法,比欧拉法更加精确。
龙格-库塔法的主要思想是使用不同的插值多项式来计算近似解,并且将时间步长分解,每次计算需要多次求解。
以下简要介绍二阶和四阶龙格-库塔法。
二阶龙格-库塔法将时间步长 h 分解成两步 h/2,得到近似解表达式:$$\begin{aligned} k_1 &= hf(t_n, y_n)\\ k_2 &= hf(t_n+h/2,y_n+k_1/2)\\ y_{n+1} &= y_n+k_2+O(h^3)\\ \end{aligned}$$四阶龙格-库塔法四阶龙格-库塔法是龙格-库塔法中应用最为广泛的一种方法,其需要计算的中间值较多,但是具有更高的精度。
实验八 常微分方程初值问题数值解法报告
实验八 常微分方程初值问题数值解法一、基本题科学计算中经常遇到微分方程(组)初值问题,需要利用Euler 法,改进Euler 法,Rung-Kutta 方法求其数值解,诸如以下问题:(1) ()⎪⎩⎪⎨⎧=-='004y xy y x y 20≤<x分别取h=0.1,0.2,0.4时数值解。
初值问题的精确解245x y e -=+。
(2) ()⎩⎨⎧=--='0122y y x y 01≤≤-x用r=3的Adams 显式和预 - 校式求解取步长h=0.1,用四阶标准R-K 方法求值。
(3)()()()100010321331221==-='⎪⎩⎪⎨⎧-='-='='y y y y y y y y y 10≤≤x用改进Euler 法或四阶标准R-K 方法求解取步长0.01,计算(0.05),(0.1y y y 数值解,参考结果 123(0.15)0.9880787,(0.15)0.1493359,(0.15)0.8613125y y y ≈-≈≈。
(4)利用四阶标准R- K 方法求二阶方程初值问题的数值解(I )()()⎩⎨⎧='==+'-''10,00023y y y y y 02.0,10=≤≤h x(II)()()()⎩⎨⎧='==+'--''00,10011.02y y y y y y 1.0,10=≤≤h x(III)()()⎪⎩⎪⎨⎧='=+='00,101y y e y y x 1.0,20=≤≤h x(IV)()()⎩⎨⎧='==+''00,100sin y y y y 2.0,40=≤≤h x二、应用题1. 小型火箭初始质量为900千克,其中包括600千克燃料。
火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贵州师范大学数学与计算机科学学院学生实验报告
课程名称: 数值分析 班级: 实验日期: 年 月 日 学 号: 姓名: 指导教师: 实验成绩: 一、实验名称
实验六: 常微分方程初值问题数值解法 二、实验目的及要求
1. 让学生掌握用Euler 法, Runge-Kutta 法求解常微分方程初值问题.
2. 培养Matlab 编程与上机调试能力. 三、实验环境
每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0). 四、实验内容
1. 取步长h=0.1,0.05,0.01, ,用Euler 法及经典4阶Runge-Kutta 法求解初值
问题
⎩⎨
⎧=≤≤++-=1
)0()
10(2222'y t t t y y 要求:
1) 画出准确解(准确解22t e y t +=-)的曲线,近似解折线;
2) 把节点0.1和0.5上的精确解与近似解比较,观察误差变化情况.
2. 用 Euler 法,隐式Euler 法和经典4阶R-K 法取不同步长解初值问题
⎪⎩
⎪
⎨⎧=
∈-=21
)0(],1,0[,50'y x y y 并画出曲线观察稳定性. 注:题1必须写实验报告
五、算法描述及实验步骤
Euler 法:
输入 000),(,,,),,(y a x x h b a y x f = 输出 Euler 解y 步1 ),,2,1(;m n h n a x h
a
b m n =⨯+=-⇐
步2 对1,,2,1,0-=m n 执行),(1n n n n y x f h y y ⨯+⇐+
步3 输出T m y y y y ),,,(21 = 经典4阶R-K 法:
输入 000),(,,,),,(y a x x h b a y x f = 输出 4阶R-K 解y 步1 ),,2,1(;m n h n a x h
a
b m n =⨯+=-⇐
步2 对1,,2,1,0-=m n 执行),(1n n y x f K ⇐,)5.0,(15.02hK y x f K n n +⇐+, )5.0,(25.03hK y x f K n n +⇐+,),(314hK y x f K n n +⇐+ )22(6
43211K K K K h
y y n n ++++⇐+ 步3 输出T m y y y y ),,,(21 =
六、调试过程及实验结果
>> shiyan6 Y1 =
0.8000 0.6620 0.5776 0.5401 0.5441 0.5853 0.6602 0.7662 0.9009 1.0627 Y2 =
0.8287 0.7103 0.6388 0.6093 0.6179 0.6612 0.7366 0.8419 0.9753 1.1353
e1 =
0.0287
e2 =
4.2469e-006 e1 =
0.0738
e2 =
1.1609e-005
注:至于h=0.05、0.01的情况将程序中的h值作相应的改动即可得。
七、总结
在1阶的Euler法解初值问题时,若步长过大的话,误差将会较大,其解不可靠,只有控制步长,在一定误差范围内才可用。
就精度阶而言经典4阶Runge-Kutta法最可取,但并不是阶高的方法就一定可用,还必须考虑初值问题的性态、数值方法的计算量稳定性等因素。
因此在实际计算中,应根据问题的具体情况来选择合适的方法。
八、附录(源程序清单)
图像、计算、误差比较程序:
x=0:0.001:1;
y=exp(-2*x)+x.^2;
plot(x,y,'r')
axis([0,1,0.5,1.2])
hold on
a=0;b=1;y0=1;h=0.1;d=y0; Y1=Euler('fun',a,b,y0,h) u1=0:0.001:h;
v1=Y1(1)+0*u1;
plot(u1,v1,'g--')
hold on
u2=0:0.001:5*h;
v2=Y1(5)+0*u2;
plot(u2,v2,'g--')
hold on
Y1=[d,Y1];
t=0:h:1;
scatter(t,Y1,'r')
hold on
plot(t,Y1)
hold on
Y2=RK('fun',a,b,y0,h)
u3=0:0.001:h;
v3=Y2(1)+0*u3;
plot(u3,v3,'y--')
hold on
u4=0:0.001:5*h; v4=Y2(5)+0*u4;
plot(u4,v4,'y--')
hold on
v5=0:0.001:Y2(1);
u5=h+0*v5;
plot(u5,v5,'k--')
hold on
v6=0:0.001:Y2(5);
u6=5*h+0*v6;
plot(u6,v6,'k--')
hold on
Y2=[d,Y2];
scatter(t,Y2,'r')
hold on
plot(t,Y2)
title('¾«È·½âÇúÏßÓë½üËƽâÕÛÏß','fonts ize',10,'fontweight','bold')
text(0.735,0.7,'\leftarrowy=Euler·¨½üËƽâÕÛÏß','fontsize',8)
text(0.15,0.775,'\leftarrowy=¾-µä4½×R unge-Kutta·¨½üËƽâÕÛÏß','fontsize',8) x=[0.1,0.5];
y=exp(-2*x)+x.^2;
e1=abs(y(1)-Y1(2))
e2=abs(y(1)-Y2(2))
e1=abs(y(2)-Y1(6))
e2=abs(y(2)-Y2(6))
Euler法程序:
function Y=Euler(f,a,b,y0,h)
m=(b-a)/h;Y=zeros(1,m);x=a;d=y0; for n=1:m
K=feval(f,x,y0);
x=x+h;
y0=y0+h*K;
Y(n)=y0;
end
定义函数:
function z=fun(t,y)
z=-2*y+2*t^2+2*t;经典4阶Runge—Kutta法程序:function Y=RK(f,a,b,y0,h)
m=(b-a)/h;Y=zeros(1,m);x=a;d=y0; for n=1:m
K1=feval(f,x,y0);
x=x+0.5*h;y1=y0+0.5*h*K1;
K2=feval(f,x,y1);
y2=y0+0.5*h*K2;
K3=feval(f,x,y2);
x=x+0.5*h;y3=y0+h*K3;
K4=feval(f,x,y3);
y0=y0+h*(K1+2*K2+2*K3+K4)/6; Y(n)=y0;
end。