第八章 常微分方程的初值问题
常微分方程的初值问题及其解法
常微分方程的初值问题及其解法常微分方程是自然界中各种变化的基础模型,广泛应用于物理、工程、生物、经济学等领域。
初值问题是其中最基本的问题之一。
本文将从初值问题的意义入手,介绍几种不同的数值解法,并评价其优缺点。
1. 初值问题的意义首先,我们来看一个简单的例子。
假设有一个人从一楼的窗户往下跳,忽略空气阻力,我们可以列出他下落的物理规律:$$\frac{d^2h}{dt^2}=g$$其中$h$是跳下来后距离地面的高度,$t$是时间,$g$是常数,表示重力加速度。
上面这条式子就是一个二阶常微分方程。
我们的问题是,如果知道了他的初速度$v_0$和起始高度$h_0$,能否求得他下落到地面时的时间和高度。
这个例子中,$h$和$t$都是连续的量,但是我们并不能解析地求出$h(t)$的解析式,因此需要用数值方法去近似求解。
这就是初值问题的意义。
通常,初值问题是指某一初始时刻$t_0$的初值:$$y'(t_0)=f(y(t_0),t_0),\ y(t_0)=y_0$$其中$y$是未知函数,而$f$则是已知函数。
对于一阶常微分方程,这个条件是充分的,可以唯一地决定一个解。
但是对于更高阶的常微分方程,则需要多个初始条件才能确定一个解。
然而,这已经超出了本文的范畴,这里只讨论一阶常微分方程的初值问题。
2. 数值解法下面将介绍几种常见的数值解法。
2.1. 欧拉法欧拉法是最简单的数值解法之一,其思路是将初值问题离散化。
具体来说,我们可以将时间$t$分成若干个小段,每段的长度为$\Delta t$。
于是,我们可以将初始时刻$t_0$的初始值$y(t_0)=y_0$,并通过欧拉法近似计算下一个时间点$t_0+\Delta t$的值$y_1$:$$y_1=y_0+f(y_0,t_0)\Delta t$$同理,我们可以通过已知的$y_1$和$t_1=t_0+\Delta t$,计算下一个时间点$t_2=t_0+2\Delta t$的值$y_2$:$$y_2=y_1+f(y_1,t_1)\Delta t$$依此类推,直到我们得到一个目标时间$t_m$的值$y_m$。
常微分方程中的初值问题及解析解的求解
常微分方程中的初值问题及解析解的求解常微分方程是数学中重要的一个分支,它研究的是一类关于未知函数及其派生函数的方程。
其中,初值问题是求解常微分方程的一种基本方法,通过给定初始条件,计算出函数在这个初始点上的值,并逐步推算出函数在逐渐逼近所求解点上的值。
解析解是指能够通过代数或函数的方式得到的函数表达式或公式,它在常微分方程中起着重要的作用。
本文将通过详细的论述,探讨常微分方程中的初值问题及解析解的求解方法。
一、初值问题1.什么是初值问题初值问题是指,给定一个常微分方程及其初始条件,求该方程在初始点上的解,即求解函数在一个点的值。
通常,初值问题可以表示为:y' = f(x, y), y(x0) = y0其中,y'表示关于x的导数,f(x,y)表示一般的函数表达式,y(x0)表示在x0这一点上,函数y的值为y0。
2.求解初值问题的方法为了求解常微分方程的初值问题,我们需要利用数值方法和解析方法两种基本的求解方法。
数值方法是通过数值计算得出函数的数值近似解,它可以在一定程度上解决一些复杂的常微分方程。
具体来看,数值方法通常采用数值迭代等一系列计算方法,将x值串联起来,以近似解代替函数的实际值。
解析方法是指利用已知的数学方法求解常微分方程的解析解。
解析方法适合于求解简单的常微分方程。
解析解的求解通常渐近地得到表达式,这些表达式能够明确地刻画出注重解析的科学问题。
二、解析解的求解1. 一阶微分方程的求解对于一阶线性微分方程,可以采用分离变量的方法求解。
常见的分离变量方法表示为:dy/dx = f(x)g(y),其中f(x),g(y)都是与x 和y有关的函数,两边同时积分,就得到:∫1/g(y)dy = ∫f(x)dx有时,可以将一阶微分方程变形为某种特定的方程,从而得到解析解。
2. 二阶微分方程的求解二阶微分方程最常见的形式为y'' + p(x)y' + q(x)y = 0。
常微分方程初值问题数值解法
数值解法的必要性
实际应用需求
许多实际问题需要求解常微分方程初值问题,如物理、 化学、生物、工程等领域。
解析解的局限性
对于复杂问题,解析解难以求得或不存在,因此需要 采用数值方法近似求解。
数值解法的优势
未来发展的方向与挑战
高精度算法
研究和发展更高精度的算法,以提高数值解的准确性和稳定性。
并行计算
利用并行计算技术,提高计算效率,处理大规模问题。
自适应方法
研究自适应算法,根据问题特性自动调整计算精度和步长。
计算机技术的发展对数值解法的影响
1 2
硬件升级
计算机硬件的升级为数值解法提供了更强大的计 算能力。
它首先使用预估方法(如欧拉方法)得到一个 初步解,然后使用校正方法(如龙格-库塔方法) 对初步解进行修正,以提高精度。
预估校正方法的优点是精度较高,且计算量相 对较小,适用于各种复杂问题。
步长与误差控制
01
在离散化过程中,步长是一个重要的参数,它决定 了离散化的精度和计算量。
02
误差控制是数值逼近的一个重要环节,它通过设定 误差阈值来控制计算的精度和稳定性。
能够给出近似解的近似值,方便快捷,适用范围广。
数值解法的历史与发展
早期发展
早在17世纪,科学家就开始尝 试用数值方法求解常微分方程。
重要进展
随着计算机技术的发展,数值 解法在20世纪取得了重要进展, 如欧拉法、龙格-库塔法等。
当前研究热点
目前,常微分方程初值问题的 数值解法仍有许多研究热点和 挑战,如高精度算法、并行计
软件优化
软件技术的发展为数值解法提供了更多的优化手 段和工具。
常微分方程的初值问题
常微分方程的初值问题常微分方程的初值问题,听起来可能有点复杂,实际上就像是在玩拼图,拼出一幅完整的画面。
咱们常常会遇到一些问题,比如说,如何预测一辆车在某个时间点的速度,或者水从一个水池流出的速度。
你看,这些看似遥不可及的数学概念,其实就在我们身边,随处可见。
咱们得了解什么是常微分方程。
简单来说,就是一种包含未知函数及其导数的方程。
听上去可能有点高深,其实就像是在寻找一个秘密,解开这个方程,就能找到那个未知的函数。
这个过程就像解密,越是仔细,就越能找到线索。
初值问题就是在这个过程中给我们提供了一个起点,告诉我们从哪儿开始探索。
想象一下,你在一个山坡上滑下来,山的高度、坡度都不一样,你需要知道从哪个点开始滑,才能顺利到达山下。
如果你开始的地方不对,滑下来的路径可能会完全偏离目标。
这就是初值的重要性。
它像是一个导航系统,指引我们在数学的世界中找到正确的方向。
我们来聊聊这些常微分方程背后的故事。
方程其实就像是一部小说,里面有角色、冲突、情节发展。
比如,物体的运动方程就像是一个小故事,讲述了物体是如何在时间中不断变化的。
只要掌握了这些方程,就能预测物体的未来发展。
是不是觉得很神奇?就像你预见到邻居家那个总是爱搞事情的小孩,今天又会做出什么让人哭笑不得的事情。
解决初值问题的时候,咱们常常用到一些方法。
比如分离变量法、积分法等等。
这些方法就像是工具箱里的工具,各种各样,适用于不同的情况。
就像你要做一道菜,可能需要刀、锅、调料,缺一不可。
掌握了这些工具,做出美味的菜肴就变得轻而易举。
很多时候我们需要借助图形来理解这些方程。
画个图,就能直观地看到变量之间的关系。
想象一下,一个坐标系里,X轴和Y轴就像是两个老朋友,在那里欢快地互动。
通过曲线的变化,我们可以预测未来的状态,就像是看见了未来的样子,心里顿时就有了底。
解决初值问题也会遇到一些“意外”。
比如说,某个方程的解可能是个奇怪的函数,或者根本找不到解。
这时候,咱们就得耐心点,像耐心的园丁一样,等待花朵的绽放。
第八章_常微分方程初值问题的单步法
为使局部截断误差为O(h ) ,应取
则
k j f ( xi c j h, y( xi c j h)) f ( xi c j h, y( xi ) hc j y( xi )) f ( xi c j h, y( xi ) hc j f ( xi , y( xi )))
f ( xi c j h, yi h a jm km )
f xx f xx ( xi , yi ), f yy f yy ( xi , yi ), f xy f xy ( xi , yi ),
由此得
k1 f , k2 f ( xi c2 h, yi c2 hk1 ) f ( xi , yi ) c2 h( f x k1 f y ) O(h ),
一. Euler方法
a x0 x1 x2 xN 1 xN b, ba x j x0 jh, h , j 1, 2, , N . N
y0 y ( x0 ), yi 1 yi hf ( xi , yi ), i 0,1, , N 1
一阶常微分方程初值问题的数值方法
------单步法
武汉大学数学与统计学院
一阶常微分方程初值问题的一般形式是:
y f ( x, y ), a x b (1) y(a) y0 D {( x, y ) a x b, c y d }
称f(x,y)在区域D上对y满足Lipschitz 条件是指:
定理显然得证.
8.1.2 一阶常微分方程初值问题的 Runge-Kutta方法
考虑一阶常微分方程初值问题
y f ( x, y ), a x b, y (a ) y0 ,
常微分方程初值问题解法
详细描述
幂级数解法是通过幂级数展开方法,将一阶 常微分方程转化为可求解的幂级数形式。这 种方法适用于一些具有特定形式的常微分方 程,通过幂级数展开方法,将原方程转化为 可求解的幂级数形式,然后找到方程的解。
03 初值问题的数值解法
欧拉方法
总结词
欧拉方法是求解常微分方程初值问题的一种简单而基础的数 值方法。
详细描述
欧拉方法基于微积分中的中点公式,通过在区间上取几个点 并近似求解微分方程,得到近似解。该方法简单易行,但精 度较低,且对于复杂的问题可能需要较大的步长才能得到满 意的结果。
龙格-库塔方法
总结词
龙格-库塔方法是求解常微分方程初值问题的一种高精度数值方法。
详细描述
龙格-库塔方法采用线性插值的思想,通过构造一系列的插值多项式来逼近微分方程的 解。这种方法精度较高,且适用于各种类型的微分方程,因此在科学计算和工程领域应
数值方法
随着计算机技术的发展,数值解法成为解决初值问题的主要手段,如欧拉法、龙格-库 塔法等,能够给出近似解并适用于各种复杂情况。
稳定性分析
对于解的存在性和稳定性,需要分析初值问题的解是否随时间演化而发散或收敛,这涉 及到解的稳定性分析。
未来研究方向与展望
高维问题
目前对高维初值问题的研究 还不够深入,未来可以探索 更有效的数值方法和理论分 析方法。
应用广泛
在各个领域中都有广泛的应用,如航天、航空、交通、经济等。
发展前景
随着科学技术的发展,常微分方程初值问题的求解方法和应用范围 将不断拓展,具有广阔的发展前景。
02 初值问题的解法
分离变量法
总结词
适用于具有特定形式的一阶常微分方程,通过将方程中的变量分离,转化为可求解的方程。
【精选】第8章 常微分方程初值问题的数值解法
3
8.1 基础知识
二、数值解法(续)
另一种分类方法为:
⑴ 显式方法:递推公式的右端都是已知量,可以直接计算出递推的结 果,递推格式为:yk=yk-1+hT(xk-r,yk-r,xk-r+1,yk-r+1,……, xk-1,yk-1) ⑵ 隐式方法:递推公式左端的未知量也出现在公式的右端,递推格式 为: yk=yk-1+hT(xk-r,yk-r,xk-r+1,yk-r+1,……, xk,yk) 隐式方法的递推公式其实是一个方程。解方程的运算量可能较大,为避免 解方程,常采用预测—校正系统。
⑶ 预测—校正系统:每一轮递推包括预测和校正这2个步骤。先用显式方 法计算出yk,作为迭代的初值,这一过程称为预测;再把隐式方法的递推 公式作为迭代公式,把预测值yk代入迭代公式右端进行迭代,这一过程称 为校正。在校正时往往迭代1次或几次,校正值的精度就会有大幅提高。 一阶常微分方程初值问题的数值解法一般是对连续的初值问题进行离散化 处理,把微分方程转化为代数方程来求解。常用的离散化方法有: ⑴ 基 于数值微分的离散化方法,⑵ 基于数值积分的离散化方法,⑶ 基于泰勒 展开的离散化方法。
一阶常微分方程初值问题的数值解法有多种分类方法。 一种分类方法为: ⑴ 单步法:每一轮递推只用到前面一轮的递推结果,递推格式为: yk=yk-1+hT(xk-1,yk-1) ⑵ 多步法:每一轮递推要用到前面多轮递推的结果,递推格式为: yk=yk-1+hT(xk-r,yk-r,xk-r+1,yk-r+1,……, xk-1,yk-1),其中r>1。
dy f (x, y) , a x b dx y(x0 ) y0
常微分方程初值问题的数值解法
常微分方程初值问题数值解法初值问题:即满足初值条件的常微分方程的解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乘以斜率;而这个斜率用区间上的端点和中点的斜率的算数平均来逼近。
常微分方程的初值问题
龙格-库塔方法是数值解 常微分方程初值问题的 一种常用方法,其精度
高于欧拉方法。
它基于线性插值和泰勒 级数展开,通过迭代的 方式逐步逼近方程的精
确解。
龙格-库塔方法对于复杂 的问题能够提供更高的 精度,但计算量相对较
大。
步长和精度的选择
1
选择合适的步长是数值解常微分方程初值问题的 关键之一。
2
步长太小会导致计算量过大,步长太大则会导致 精度不足。
波动传播
在物理中,波动传播问题也可以通过设置初值条件,利用常微分方 程进行描述,例如弦振动、波动传播等。
在化学中的应用
化学反应动力学
化学反应的动力学模型可以通过 设置适当的初值条件,利用常微 分方程进行描述。
化学反应过程模拟
在化学反应过程中,通过设置初 值条件,可以利用常微分方程模 拟反应过程的变化规律。
初值问题在数学、物理、工程等 领域有广泛应用,用于描述各种 动态系统的行为。
描述初值问题的解法
初值问题的解法通常包括 数值方法和解析方法。
解析方法则是通过求解微 分方程来得到解析解,适 用于某些特殊类型的微分 方程。
ABCD
数值方法包括欧拉法、龙 格-库塔法等,通过迭代 逼近方程的解。
解法选择取决于具体问题、 精度要求和计算资源等因 素。
在工程中的应用
控制工程
在控制工程中,系统的动态行为可以通过设置适当的初值条件,利用常微分方程进行描 述。
航空航天工程
航空航天工程中的飞行器运动规律可以通过设置初值条件,利用常微分方程进行描述。
THANKS FOR WATCHING
感谢您的观看
描述初值问题的存在性和唯一性
01 02 03 04
存在性是指对于给定的初始条件,是否存在一个解满足微分方程。
常微分方程的初值问题
常微分方程的初值问题什么是常微分方程?常微分方程(Ordinary Differential Equations,简称ODE)是描述一个未知函数关于自变量微分关系的方程,被广泛用于描述自然现象。
常微分方程与偏微分方程不同的是,常微分方程只涉及一个自变量,而偏微分方程涉及多个自变量。
举个例子,我们都知道牛顿第二定律F=ma,如果我们设F为常数,令a=dv/dt,那么牛顿第二定律可以转化为md2x/dt2=F,这就是一个常微分方程。
常微分方程的形式十分多样,有些可以直接求解,有些则需要通过变换后求解。
常见的常微分方程包括一阶常微分方程、二阶常微分方程、线性常微分方程、非线性常微分方程等。
当然,还有更加复杂的常微分方程,如偏微分方程。
什么是初值问题?初值问题(Initial Value Problem,简称IVP)是一类常微分方程问题中的基本问题。
初值问题指的是给定一个常微分方程及其初值,求解出该常微分方程的通解,即求出在该初值下使方程成立的特定解,亦称特解。
举个例子,假设掷出一个物体,求出它的高度随时间的变化规律,那么初始高度ℎ0和初速度v0就是初值,可以通过方程y″=−g来描述。
其中y表示高度,g为重力加速度。
初值问题的求解方法通常分为数值方法和解析方法两种。
数值方法求解初值问题数值方法通过把求解域分成很多小段,逐一计算每个小段上函数的近似值,并且通过迭代来逼近精确解。
数值方法的优点是可以处理较为复杂的问题,并且求解过程相对简单。
常见的数值方法求解初值问题的算法包括:•欧拉法:一种最简单的迭代方法,从初始条件开始,逐一迭代得到每个时刻的函数近似值。
•改进的欧拉法:欧拉法精度不高,改进的欧拉法通过一阶和二阶泰勒展开来提高迭代精度。
•龙格-库塔法:一种更加精确的迭代方法,通过逼近微分方程精确解来提高近似解的精度。
解析方法求解初值问题解析方法是指通过解析求出一个函数的精确表达式。
如求一阶齐次线性常微分方程y′+p(x)y=0的通解,可以通过分离变量法求解:dy/y=−p(x)dx$$ln |y| = -\\int p(x)dx + C$$$$y=Ce^{-\\int p(x)dx}$$对于非线性常微分方程,解析求解通常较为困难,因此数值方法得到了广泛的应用。
计算方法课件第八章常微分方程初值问题的数值解法
整体截断误差与局部截断误差的关系
定理:如果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方法
常微分方程数值解法
第八章 常微分方程的数值解法一.内容要点考虑一阶常微分方程初值问题:⎪⎩⎪⎨⎧==00)(),(y x y y x f dx dy微分方程的数值解:设微分方程的解y (x )的存在区间是[a,b ],在[a,b ]内取一系列节点a= x 0< x 1<…< x n =b ,其中h k =x k+1-x k ;(一般采用等距节点,h=(b-a)/n 称为步长)。
在每个节点x k 求解函数y(x)的近似值:y k ≈y(x k ),这样y 0 , y 1 ,...,y n 称为微分方程的数值解。
用数值方法,求得f(x k )的近似值y k ,再用插值或拟合方法就求得y(x)的近似函数。
(一)常微分方程处置问题解得存在唯一性定理对于常微分方程初值问题:⎪⎩⎪⎨⎧==00)(),(y x y y x f dx dy如果:(1) 在B y y A x x 00≤-≤≤,的矩形内),(y x f 是一个二元连续函数。
(2) ),(y x f 对于y 满足利普希茨条件,即2121y y L y x f y x f -≤-),(),(则在C x x 0≤≤上方程⎪⎩⎪⎨⎧==00)(),(y x y y x f dxdy的解存在且唯一,这里C=min((A-x 0),x 0+B/L),L 是利普希茨常数。
定义:任何一个一步方法可以写为),,(h y x h y y k k k 1k Φ+=+,其中),,(h y x k k Φ称为算法的增量函数。
收敛性定理:若一步方法满足: (1)是p 解的.(2) 增量函数),,(h y x k k Φ对于y 满足利普希茨条件.(3) 初始值y 0是精确的。
则),()()(p h O x y kh y =-kh =x -x 0,也就是有0x y y lim k x x kh 0h 0=--=→)((一)、主要算法 1.局部截断误差局部截断误差:当y(x k )是精确解时,由y(x k )按照数值方法计算出来的1~+k y 的误差y (x k+1)- 1~+k y 称为局部截断误差。
常微分方程的初值问题
常微分方程的初值问题常微分方程是数学中的一种重要工具,它能够描述许多自然界和社会现象的变化规律。
而常微分方程的初值问题则是常微分方程研究中的常见问题之一,它需要确定未知函数及其导数在某个特定点的值。
本文将介绍常微分方程的初值问题的定义、求解方法以及实际应用。
一、初值问题的定义在常微分方程中,初值问题是指在已知微分方程的解的条件下,需要确定一个特定点上未知函数及其导数的值。
具体而言,考虑一个形如dy/dx=f(x,y)的一阶常微分方程,其中x是自变量,y是因变量,f是已知的函数。
若已知y(x0)=y0,则求解这个微分方程的过程即为解决初值问题。
二、求解方法对于常微分方程的初值问题,可以使用多种方法进行求解,下面将介绍两种常见的方法:欧拉方法和四阶龙格-库塔方法。
1. 欧拉方法欧拉方法是一种简单而直观的求解常微分方程的数值方法。
它的基本思想是将求解区间等分为多个小区间,然后通过逐步逼近的方式计算未知函数的近似值。
具体步骤如下:- 将求解区间[a, b]等分为n个小区间,步长h=(b-a)/n。
- 定义网格节点xi=a+i*h,i=0,1,2,...,n。
- 初始条件为y(x0)=y0,通过递推公式y(xi+1) = y(xi) + h*f(xi, y(xi)),计算出近似值y(xi+1)。
- 重复上述步骤,直到计算到需要的点。
欧拉方法的优点是简单易懂,但对于某些特定的微分方程,其数值解可能不够精确。
2. 四阶龙格-库塔方法四阶龙格-库塔方法是一种更为精确的求解常微分方程的数值方法,它通过计算多个逼近值的组合来提高计算精度。
具体步骤如下:- 将求解区间[a, b]等分为n个小区间,步长h=(b-a)/n。
- 定义网格节点xi=a+i*h,i=0,1,2,...,n。
- 初始条件为y(x0)=y0,通过递推公式计算逼近值k1、k2、k3和k4。
- k1 = h*f(xi, y(xi))- k2 = h*f(xi + h/2, y(xi) + k1/2)- k3 = h*f(xi + h/2, y(xi) + k2/2)- k4 = h*f(xi + h, y(xi) + k3)- 计算近似值y(xi+1) = y(xi) + (k1 + 2k2 + 2k3 + k4)/6。
第八章常微分方程的初值问题
y(k) n1
)]
迭代法太麻烦,实际上,当h取得很小时,只让上式中 的第二式迭代一次就可以,即
改进的Euler法(也叫欧拉预估—校正法)
y(0) n1
yn
hf ( xn , yn )
预估算式
yn1
yn
h 2 [ f ( xn, yn )
f
(
xn1
,
y(0) n1
)]
校正算式
改进的Euler法=向前欧拉法+梯形法
x0
x
y( x) y( x0 )
f ( x, y( x))dx
x0
x
y( x) y( x0 )
f ( x, y( x))dx
x0
1、向前Euler法 y'( x) f ( x, y( x)), y( x0 ) y0
推导1:设节点为 xn x0 nh,(n 0,1,2, ) 用向前差分公式代替导数:
注1: 微分方程中用 D 表示对 自变量 的导数,如:
Dy
y'; D2y
y''; D3y
y'''
注2:如果省略初值条件,则表示求通解;
例 :求微分方程 dy 2 xy xe x2的通解,并验证。 dx
>> y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') 结果为 y =(1/2*x^2+C1)*exp(-x^2)
xn
y( xn1) y( xn )
xn1 f ( x, y( x))dx
xn
用矩形代替右边的积分 y( xn1 ) y( xn ) hf ( xn , y( xn ))
第八章 常微分方程初值问题的解法
第八章常微分方程初值问题的解法在科学与工程问题中,常微分方程描述物理量的变化规律,应用非常广泛. 本章介绍最基本的常微分方程初值问题的解法,主要针对单个常微分方程,也讨论常微分方程组的有关技术.8.1引言本节介绍常微分方程、以及初值问题的基本概念,并对常微分方程初值问题的敏感性进行分析.8.1.1 问题分类与可解性很多科学与工程问题在数学上都用微分方程来描述,比如,天体运动的轨迹、机器人控制、化学反应过程的描述和控制、以及电路瞬态过程分析,等等. 这些问题中要求解随时间变化的物理量,即未知函数y(t),t表示时间,而微分方程描述了未知函数与它的一阶或高阶导数之间的关系. 由于未知函数是单变量函数,这种微分方程被称为常微分方程(ordinary differential equation, ODE),它具有如下的一般形式①:g(t,y,y′,⋯,y(k))=0 ,(8.1) 其中函数g: ℝk+2→ℝ. 类似地,如果待求的物理量为多元函数,则由它及其偏导函数构成的微分方程称为偏微分方程(partial differential equation, PDE). 偏微分方程的数值解法超出了本书的范围,但其基础是常微分方程的解法.在实际问题中,往往有多个物理量相互关联,它们构成的一组常微分方程决定了整个系统的变化规律. 我们先针对单个常微分方程的问题介绍一些基本概念和求解方法,然后在第8.5节讨论常微分方程组的有关问题.如公式(8.1),若常微分方程包含未知函数的最高阶导数为y(k),则称之为k阶常微分方程. 大多数情况下,可将常微分方程(8.1)写成如下的等价形式:y(k)=f(t,y,y′,⋯,y(k−1)) ,(8.2) 其中函数f: ℝk+1→ℝ. 这种等号左边为未知函数的最高阶导数y(k)的方程称为显式常微分方程,对应的形如(8.1)式的方程称为隐式常微分方程.通过简单的变量代换可将一般的k阶常微分方程转化为一阶常微分方程组. 例如对于方程(8.2),设u1(t)=y(t),u2(t)=y′(t),⋯,u k(t)=y(k−1), 则得到等价的一阶显式常微分方程组为:{u1′=u2u2′=u3⋯u k′=f(t,u1,u2,⋯,u k).(8.3)本书仅讨论显式常微分方程,并且不失一般性,只需考虑一阶常微分方程或方程组.例8.1 (一阶显式常微分方程):试用微积分知识求解如下一阶常微分方程:y′=y .[解] 采用分离变量法进行推导:①为了表达式简洁,在常微分方程中一般省略函数的自变量,即将y(t)简记为y,y′(t)简记为y′,等等.dy dt =y ⟹ dy y=dt , 对两边积分,得到原方程的解为:y (t )=c ∙e t ,其中c 为任意常数.从例8.1看出,仅根据常微分方程一般无法得到唯一的解. 要确定唯一解,还需在一些自变量点上给出未知函数的值,称为边界条件. 一种边界条件设置方法是给出t =t 0时未知函数的值:y (t 0)=y 0 .在合理的假定下,从t 0时刻对应的初始状态y 0开始,常微分方程决定了未知函数在t >t 0时的变化情况,也就是说这个边界条件可以确定常微分方程的唯一解(见定理8.1). 相应地,称y (t 0)=y 0为初始条件,而带初始条件的常微分方程问题:{y ′=f (t,y ),t ≥t 0y (t 0)=y 0 . (8.4)为初值问题(initial value problem, IVP ).定理8.1:若函数f (t,y )关于y 满足李普希兹(Lipschitz )条件,即存在常数L >0,使得对任意t ≥t 0,任意的y 与y ̂,有:|f (t,y )−f(t,y ̂)|≤L |y −y ̂| ,(8.5) 则常微分方程初值问题(8.4)存在唯一的解.一般情况下,定理8.1的条件总是满足的,因此常微分方程初值问题的解总是唯一存在的. 为了更清楚地理解这一点,考虑f (t,y )的偏导数ðf ðy 存在,则它在求解区域内可推出李普希兹条件(8.5),因为f (t,y )−f (t,y ̂)=ðf ðy (t,ξ)∙(y −y ̂) , 其中ξ为介于y 和y ̂之间的某个值. 设L 为|ðf ðy (t,ξ)|的上界,(8.5)式即得以满足.对公式(8.4)中的一阶常微分方程还可进一步分类. 若f (t,y )是关于y 的线性函数,f (t,y )=a (t )y +b (t ) ,(8.6) 其中a (t ),b (t )表示自变量为t 的两个一元函数,则对应的常微分方程为线性常微分方程,若b (t )≡0, 则为线性齐次常微分方程. 例8.1中的方程属于线性、齐次、常系数微分方程,这里的“常系数”是强调a (t )为常数函数.8.1.2 问题的敏感性对常微分方程初值问题,可分析它的敏感性,即考虑初值发生扰动对结果的影响. 注意这里的结果(解)是一个函数,而不是一个或多个值. 由于实际应用的需要,分析常微分方程初值问题的敏感性时主要关心t →∞时y (t )受影响的情况,并给出有关的定义. 此外,考虑到常微分方程的求解总与数值算法交织在一起、以及历史的原因,一般用“稳定”、“不稳定”等词汇说明问题的敏感性.定义8.1:对于常微分方程初值问题(8.4),考虑初值y 0的扰动使问题的解y (t )发生偏差的情形. 若t →∞时y (t )的偏差被控制在有界范围内,则称该初值问题是稳定的(stable ),否则该初值问题是不稳定的(unstable ). 特别地,若t →∞时y (t )的偏差收敛到零,则称该初值问题是渐进稳定的(asymptotically stable ).关于定义8.1,说明两点:● 渐进稳定是比稳定更强的结论,若一个问题是渐进稳定的,它必然是稳定的. ● 对于不稳定的常微分方程初值问题,初始数据的扰动将使t →∞时的结果误差无穷大. 因此为了保证数值求解的有效性,常微分方程初值问题具有稳定性是非常重要的.例8.2 (初值问题的稳定性): 考察如下“模型问题”的稳定性:{y ′=λy,t ≥t 0y (t 0)=y 0 . (8.7)[解] 易知此常微分方程的准确解为:y (t )=y 0e λ(t−t 0). 假设初值经过扰动后变为y 0+Δy 0,对应的扰动后解为y ̂(t )=(y 0+Δy 0)e λ(t−t 0),所以扰动带来的误差为Δy (t )=Δy 0e λ(t−t 0) .根据定义8.1,需考虑t →∞时Δy (t )的值,它取决于λ. 易知,若λ≤0,则原问题是稳定的,若λ>0,原问题不稳定. 而且当λ<0时,原问题渐进稳定.图8-1分三种情况显示了初值扰动对问题(8.7)的解的影响,从中可以看出不稳定、稳定、渐进稳定的不同含义.对例8.2中的模型问题,若考虑参数λ为一般的复数,则问题的稳定性取决于λ的实部,若Re(λ)≤0, 则问题是稳定的,否则不稳定. 例8.2的结论还可推广到线性、常系数常微分方程,即根据f (t,y )中y 的系数可确定初值问题的稳定性. 对于一般的线性常微分方程(8.6),由于方程中y 的系数为关于t 的函数,仅能分析t 取某个值时的局部稳定性.例8.3 (局部稳定性): 考察如下常微分方程初值问题的稳定性:{y ′=−10ty,t ≥0y (0)=1 . (8.8)[解] 此常微分方程为线性常微分方程,其中y 的系数为a (t )=−10t . 当t ≥0时,a (t )≤0,在定义域内每个时间点上该问题都是局部稳定的.事实上,方程(8.8)的解析为y (t )=e −5t 2,初值扰动Δy 0造成的结果误差为Δy (t )=Δy 0e −5t 2. 这说明初值问题(8.8)是稳定的.对于更一般的一阶常微分方程(8.4),由于其中f (t,y )可能是非线性函数,分析它的稳定性非常复杂. 一种方法是通过泰勒展开用一个线性常微分方程来近似它,再利用线性常微分方程稳定性分析的结论了解它的局部稳定性. 具体的说,在某个解函数y ∗(t)附近用一阶泰勒展开近似f (t,y ),f (t,y )≈f (t,y ∗)+ðf ðy(t,y ∗)∙(y −y ∗) 则原微分方程被局部近似为(用符号z 代替y ): 图8-1 (a) λ>0对应的不稳定问题, (b) λ=0对应的稳定问题, (c) λ<0对应的渐进稳定问题. (a) (b) (c)z′=ðfðy(t,y∗)∙(z−y∗)+f(t,y∗)这是关于未知函数z(t)的一阶线性常微分方程,可分析t取某个值时的局部稳定性. 因此,对于具体的y∗(t)和t的取值,常微分方程初值问题(8.4)的局部稳定性取决于ðfðy(t,y∗)的实部的正负号. 应注意的是,这样得到的关于稳定性的结论只是局部有效的.实际遇到的大多数常微分方程初值问题都是稳定的,因此在后面讨论数值解法时这常常是默认的条件.8.2简单的数值解法与有关概念大多数常微分方程都无法解析求解(尤其是常微分方程组),只能得到解的数值近似. 数值解与解析解有很大差别,它是解函数在离散点集上近似值的列表,因此求解常微分方程的数值方法也叫离散变量法. 本节先介绍最简单的常微分方程初值问题解法——欧拉法(Euler method),然后给出数值解法的稳定性和准确度的概念,最后介绍两种隐格式解法.8.2.1 欧拉法数值求解常微分方程初值问题,一般都是“步进式”的计算过程,即从t0开始依次算出离散自变量点上的函数近似值. 这些离散自变量点和对应的函数近似值记为:t0<t1<⋯<t n<t n+1<⋯y 0,y1,⋯y n,y n+1,⋯其中y0是根据初值条件已知的. 相邻自变量点的间距为 n=t n+1−t n, 称为步长.数值解法通常使用形如y n+1=G(y n+1,y n,y n−1,…,y n−k)(8.9) 的计算公式,其中G表示某个多元函数. 公式(8.9)是若干个相邻时间点上函数近似值满足的关系式,利用它以及较早时间点上函数近似值可算出y n+1. 若公式(8.9)中k=0,则对应的解法称为单步法(single-step method),其计算公式为:y n+1=G(y n+1,y n) .(8.10) 否则,称为多步法(multiple-step method). 另一方面,若函数G与y n+1无关,即:y n+1=G(y n,y n−1,…,y n−k),则称为显格式方法(explicit method),否则称为隐格式方法(implicit method). 显然,显格式方法的计算较简单,只需将已得到的函数近似值代入等号右边,则可算出y n+1.欧拉法是一种显格式单步法,对初值问题(8.4)其计算公式为:y n+1=y n+ n f(t n,y n) , n=0,1,2,⋯.(8.11) 它可根据数值微分的向前差分公式(第7.7节)导出. 由于y′=f(t,y),则y′(t n)=f(t n,y(t n))≈y(t n+1)−y(t n)n,得到近似公式y(t n+1)≈y(t n)+ n f(t n,y(t n)),将其中的函数值换为数值近似值,则得到欧拉法的递推计算公式(8.11). 还可以从数值积分的角度进行推导,由于y(t n+1)=y(t n)+∫y′(s)dst n+1t n =y(t n)+∫f(s,y(s))dst n+1t n,用左矩形公式近似计算其中的积分(矩形的高为s=t n时被积函数值),则有y(t n+1)≈y(t n)+ n f(t n,y(t n)) ,将其中的函数值换为数值近似值,便得到欧拉法的计算公式.例8.4 (欧拉法):用欧拉法求解初值问题{y ′=t −y +1y (0)=1. 求t =0.5时y (t )的值,计算中将步长分别固定为0.1和0.05.[解] 在本题中,f (t,y )=t −y +1, t 0=0, y 0=1, 则欧拉法计算公式为:y n+1=y n + (t n −y n +1) , n =0,1,2,⋯当步长h=0.1时,计算公式为y n+1=0.9y n +0.1t n +0.1; 当步长h=0.05时,计算公式为y n+1=0.95y n +0.05t n +0.05. 两种情况的计算结果列于表8-1中,同时也给出了准确解y (t )=t +e −t 的结果.表8-1 欧拉法计算例8.4的结果 h=0.1h=0.05 t ny n y (t n ) t n y n t n y n 0.11.000000 1.004837 0.05 1.000000 0.3 1.035092 0.21.010000 1.018731 0.1 1.002500 0.35 1.048337 0.31.029000 1.040818 0.15 1.007375 0.4 1.063420 0.41.056100 1.070320 0.2 1.014506 0.45 1.080249 0.5 1.090490 1.106531 0.25 1.023781 0.5 1.098737 从计算结果可以看出,步长取0.05时,计算的误差较小.在常微分方程初值问题的数值求解过程中,步长 n ,(n =0,1,2,⋯)的设置对计算的准确性和计算量都有影响. 一般地,步长越小计算结果越准确,但计算步数也越多(对于固定的计算区间右端点),因此总计算量就越大. 在实际的数值求解过程中,如何设置合适的步长达到准确度与效率的最佳平衡是很重要的一个问题.8.2.2数值解法的稳定性与准确度在使用数值方法求解初值问题时,还应考虑数值方法的稳定性. 实际的计算过程中都存在误差,若某一步的解函数近似值y n 存在误差,在后续递推计算过程中,它会如何传播呢?会不会恶性增长,以至于“淹没”准确解?通过数值方法的稳定性分析可以回答这些问题. 首先给出稳定性的定义.定义8.2:采用某个数值方法求解常微分方程初值问题(8.4),若在节点t n 上的函数近似值存在扰动δn ,由它引起的后续各节点上的误差δm (m >n )均不超过δn ,即|δm |≤|δn |,(m >n),则称该方法是稳定的.在大多数实际问题中,截断误差是常微分方程数值求解中的主要计算误差,因此我们忽略舍入误差. 此外,仅考虑稳定的常微分方程初值问题.考虑单步法的稳定性,需要分析扰动δn 对y n+1的影响,推导δn+1与δn 的关系式. 以欧拉法为例,先考虑模型问题(8.7),并且设Re(λ)≤0. 此时欧拉法的计算公式为②:y n+1=y n + λy n =(1+ λ)y n ,由y n 上的扰动δn 引起y n+1的误差为:δn+1=(1+ λ)δn ,要使δn+1的大小不超过δn ,则要求|1+ λ|≤1 . (8.12)② 对于稳定性分析以及后面的一些场合,由于只考虑一步的计算,将步长 n 记为 .。
常微分方程初值问题的的数值解法
本章讨论常微分方程初值问题的数值解法
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 )
常微分方程的初值问题
常微分方程的初值问题常微分方程是研究自变量只有一个的函数关系的微分方程,是数学中的重要基础理论之一。
在实际问题中,很多现象都可以用常微分方程来描述和解释。
而初值问题则是求解常微分方程的一种常用方法。
初值问题是指在给定一个常微分方程及其初始条件的情况下,求解该方程在给定初始条件下的解。
初始条件通常是给定自变量和因变量的值,以及一阶导数的值。
解决初值问题的关键在于找到满足给定初始条件的特解。
通过求解常微分方程的初值问题,可以得到函数关系的具体解析表达式或者数值解。
这对于实际问题的建模和分析具有重要意义。
常微分方程的初值问题在物理学、工程学、经济学等领域都有广泛应用。
以常微分方程dy/dx = f(x)为例,其中f(x)表示自变量x的函数,y 表示因变量,我们可以通过以下步骤解决初值问题:1. 根据给定的初始条件,得到初始值点(x0, y0);2. 将初始值点代入常微分方程,得到关于未知函数y的微分方程;3. 求解微分方程得到通解;4. 将初始值点代入通解中,得到满足初始条件的特解。
需要注意的是,常微分方程的解可能不是唯一的,解的存在性和唯一性需要通过数学理论进行证明。
在求解过程中,也可能面临无解、解不唯一或者无法用解析表达式表示的情况,此时可以采用数值方法进行近似求解。
常微分方程的初值问题具有广泛的应用。
例如,在物理学中,质点在外力作用下的运动可以通过牛顿第二定律建立常微分方程,并通过给定的初始条件求解得到质点的运动轨迹。
在经济学中,经济增长模型可以描述经济的增长速度,并通过初始条件求解得到经济的发展趋势。
总之,常微分方程的初值问题是数学中一种常用的求解方法,能够描述和解释实际问题中的许多现象。
通过求解初值问题,可以得到常微分方程的具体解析解或者数值解,为实际问题的建模和分析提供了有效的工具。
8.1用改进的Euler方法解初值问题
第八章常微分方程数值解法8.1用改进的Euler 方法解初值问题:取步长h=0.1计算,并与准确解相比较。
⎩⎨⎧=≤<+=1)0(10,'y x y x y 12−−=x e y x 8.2用改进的Euler 方法解初值问题:取步长h=0.1计算y(0.5),并与准确解相比较。
⎩⎨⎧=−+=0)0('2y y x x y x e x x y −−+−=12习题8第八章常微分方程数值解法8.3对初值问题:证明Euler 公式和梯形公式求得的近似解分别为⎩⎨⎧=−=1)0('y y y ,)1(n n h y −=n n h h y ⎟⎠⎞⎜⎝⎛+−=22并证明当时,它们都收敛于准确解。
0→h x e x y −=)(8.4取h=0.2,用经典R-K 法求解下列初值问题:⎪⎩⎪⎨⎧=≤<+=1)0(10,13')2(y x x y y ⎩⎨⎧=≤<+=1)0(10,')1(y x y x y第八章常微分方程数值解法8.5证明对任意参数t ,下列R -K 公式是二阶的:))1(,)1((),(),()(213121321hK t y h t x f K thK y th x f K y x f K K K h y y n n n n n n n n −+−+=++==++=+8.6对试验方程,试证明如下方法给出的绝对稳定条件。
(2)经典R-K 公式:(1)改进的Euler 公式:1|2)(1|2≤++h h λλ)0('<=λλy y 1|24)(6)(2)(1|432≤++++h h h h λλλλ第八章常微分方程数值解法本节内容完毕,点击自动返回章目录!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
梯形法
yn 1 yn
h 2
[ f ( xn , yn ) f ( xn1 , yn1 )]
从n=0开始计算,每步都要求解一个关于yn+1的方程
(一般是一个非线性方程),可用如下的迭代法计算:
( 0) yn1 yn hf ( xn , yn ) ( k 0,1, 2,) ( k 1) h (k ) yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2
向前Euler法: y n 1 y n h f ( x n , y n ), n 0 ,1, 2 , 此处,y (xn)表示 xn 处的理论解,yn表示y (xn)的近似解
推导2: 一阶ODE
y '( x ) f ( x , y ( x )) y( x0 ) y0
2、如果 f 是 y 的函数 ,积分过程将不同于前者。 若 f 是 y 的线性函数,如:f=ay+b 其中a,b是常数或是 t 的函数, 此时原方程称为线性ODE 若 f 不是线性函数,方程就称为非线性ODE。
一、求ODE的解析解
dsolve
[输出变量列表]=dsolve(‘eq1’,‘eq2’, ... , ‘eqn’, ‘cond1’,‘cond2’, ... , ‘condn’, ‘v1,v2,…vn') 其中 eq1、eq2、...、eqn为微分方程,cond1、 cond2、...、condn为初值条件,v1,v2,…,vn 为自变量。 注1: 微分方程中用 D 表示对 自变量 的导数,如: Dy y'; D2y y''; D3y y'''
例 求解
C 2 y g y x [0 , 2 0 ] M y(0) 0
其中 C=0.27, M=70,
g=9.8 并画图
x 0, y 0 C 2 yn 1 yn h f ( xn , yn ) yn h( yn g ) M xn 1 xn h
会增加。带有负时间系数的常见方程为
y y , y (0 ) y 0 0, 0
其精确解为
y y0e
t
该问题的向前Euler格式为: y n 1 (1 h ) y n 如果 1 h 0 ,数值解为正的趋于零;如果 h 1, 随n的增加,解的符号交替改变;如果 h 2 ,则在每一 步符号变化后,解的数量级增加,最终导致结果发散。
改进的Euler法=向前欧拉法+梯形法
1 .5 例2 初值问题:y y 1, y (0 ) 1 0
此题无解析解
求解 0 t 1的值。 向前Euler法: y n 1 y n h f ( t n , y n , )
yf(1) = 10; t(1) = 0; h = 0.1; n=1; fprintf(' t yf\n'); fprintf('%3.1f %6.4f\n',t(1),yf(1)); while t(n)<1 yf(n+1) = yf(n) + h*( -yf(n)^1.5 + 1); t(n+1) = t(n) + h; n = n+1; fprintf('%3.1f %6.4f\n',t(n),yf(n)); end 迭代5步结果: t 0.0 0.1 0.2 0.3 0.4 0.5 yf 10.0000 6.9377 5.2104 4.1210 3.3844 2.8618
例 :求微分方程 xy ' y e x 0 在初值条件 y(1) 2e 下的特解,并画出解函数的图形。
>> y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x') 结果为 y = (exp(x)+exp(1))/x >> ezplot(y) %此时的y已经是符号变量,故不用ezplot(‘y’) 例:
迭代法太麻烦,实际上,当h取得很小时,只让上式中
的第二式迭代一次就可以,即
改进的Euler法(也叫欧拉预估—校正法)
( 0) yn1 yn hf ( xn , yn ) 预估算式 h ( 0) 校正算式 yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2
用梯形代替右边的积分
y ( x n1 ) y ( x n ) h 2 [ f ( x n , y ( x n ) f ( x n 1 , y ( x n 1 )]
yn 近似代替y (xn) y y h [ f ( x , y ) f ( x , y )] n 1 n n n n 1 n 1
x x0
y '( x )d x
x
f ( x , y ( x ))d x
x0
y( x ) y( x0 ) y( x ) y( x0 )
x
f ( x , y ( x ))d x
x0 x
f ( x , y ( x ))d x
x0
1、向前Euler法
y '( x ) f ( x , y( x )), y( x0 ) y0
对 y '( x ) f ( x , y ( x )) 两边从xn 到 xn+1 积分得:
xn1 xn
y '( x )d x
xn1 xn
f ( x , y ( x ))d x
xn1 xn xn1 xn
y ( x n1 ) y ( x n ) y ( x n1 ) y ( x n )
C = 0.27; M = 70; g = 9.8; x = 0; y=0; h = 0.1;
n=0; %n为迭代次数
xr(1)=t; yr(1) = v;
x 0, y 0 C 2 yn 1 yn h f ( xn , yn ) yn h( yn g ) M xn 1 xn h
while x<20 n=n+1;
y=y + h*( -C/M*y^2 + g);
x= x+h; yr(n+1) = v; xr(n+1) = x; end plot (xr, yr);axis([0,20,0,60])
60
50
40
30
20
v
10 0 0
2
4
6
8
10
12
14
16
18
20
t
尽管向前Euler法非常简单,但有两种误差效应:第一 种是截断误差,第二种误差源于计算的不稳定性。当方 程的时间系数为负值,h又不是很小时,第二种误差就
f ( x , y ( x ))d x f ( x , y ( x ))d x
用矩形代替右边的积分 y ( x n 1 ) y ( x n ) h f ( x n , y ( x n )) yn 近似代替y (xn)
yn1 yn hf ( xn , yn )
向前Euler法
介绍这些方法是为了了解初值问题求解的基本思想。
一阶ODE
y '( x ) f ( x , y ( x )) y( x0 ) y0
y( x ) y( x0 )
x
f ( x , y ( x ))d x
x0
( 积分方程)
对 y '( x ) f ( x , y ( x )) 两边从x0 到 x 积分得:
[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0', ... 'x(0)=1', 'y(0)=0', 't')
或
r=dsolve('Dx+5*x+y=exp(t)', 'Dy-x-3*y=0', ... 'x(0)=1', 'y(0)=0', 't')
这里返回的 r 是一个 结构类型 的数据 r.x r.y %查看解函数 x(t) %查看解函数 y(t)
(0) (1) ( ( ( 利用此算法,可得: yn1 , yn1 , yn2)1 , , ynk )1 , ynk 1) , 1
利用 迭代
yn1 yn1 ( 为允许误差)来控制是否继续
( k 1) (k )
( 0) yn1 yn hf ( xn , yn ) ( k 0,1, 2,) ( k 1) h (k ) yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2
dsolve的输出个数只能为一个 或 与方程个数相等。
注5:若找不到解析解,则返回其积分形式。 例 :用dsolve求解著名的Van der Pol方程
d y( t ) dt
2 2
( y ( t ) 1)
2
dy( t ) dt
y( t ) 0
>> syms mu; >> y=dsolve('D2y+mu*(y^2-1)*Dy+y') 结果:Warning, cannot find an explicit solution y= &where(_a,{[diff(_b(_a),_a)*_b(_a)+mu*_b(_a)*_a^2mu*_b(_a)+_a = 0, _b(_a) = diff(y(t),t), _a = y(t), y(t) = _a, t = Int(1/_b(_a),_a)+C1]})