欧拉方法

来自testwiki
imported>Cewbot2024年10月28日 (一) 19:12的版本 (清理跨語言連結常微分方程數值方法折线成為內部連結:編輯摘要的紅色內部連結乃正常現象,經繁簡轉換後存在,非bot錯誤編輯 (本次機械人作業已完成74.6%))
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Expand language Template:Differential equations数学计算机科学中,欧拉方法Template:Lang-enTemplate:Notetag),是一种一阶数值方法,用以对给定初值的常微分方程Template:Notetag求解。

欧拉方法是常微分方程數值方法中最基本的显式方法;是一阶的方法,意味着其局部截断误差Template:Notetag正比于步长的平方,并且其全局截断误差正比于步长。Template:Notetag

非正式的几何描述

欧拉方法的图示。待求的曲线为蓝色,它的折線近似为红色。

考虑计算這樣的一个未知曲線的形状:它具有给定的起点并且满足一个给定的微分方程。 这里,所谓“微分方程”可以看作能够通过曲线上任意点的位置而计算出这一点的切线斜率的公式。

思路是,一开始只知道曲線的起点(假设为A0),曲線其他部份是未知的,不過通过微分方程,A0的斜率可以被计算出来,也就得到了切线。

顺着切线向前走一小步到点A1。如果假设A1是曲线上的一点(实际上通常不是),那么同样的道理就可以确定下一条切线,依此类推。在经过几步之后,一条折线A0A1A2A3就被计算出来了。一般情况下,这条折线与原先的未知曲线偏离不远,并且任意小的误差都可以通过减少步长来得到。

欧拉方法的推导

图示为方程y=y,y(0)=1的数值积分。蓝色为欧拉法,绿色为中点法,红色为精确解y=et。所用步长為h=1.0
图示为同一个方程在步长h=0.25时的结果。可以看出中点法比欧拉法收敛更快。

以以下微分方程為例

y(t)=f(t,y(t)),y(t0)=y0,

希望用 y 在點 (t0,y(t0)) 附近的線性近似來得到其近似解(也就是 y泰勒展開式的前二項)。利用時間 tn 時的數值,若用單步的欧拉方法,可得到時間 tn+1 = tn + h 時的近似值如下:

yn+1=yn+hf(tn,yn).

欧拉方法是一種顯型方法,也就是說 yn+1 的解是 yi, in 的顯函數。

欧拉方法可以求解一階的微分方程,而任何N階的微分方程都可以表示成一階的微分方程。

對於微分方程

y(N)(t)=f(t,y(t),y(t),,y(N1)(t))

可以通過新設輔助變量 z1(t)=y(t),z2(t)=y(t),,zN(t)=y(N1)(t),得到以下的等價方程

𝐳(t)=(z1(t)zN1(t)zN(t))=(y(t)y(N1)(t)y(N)(t))=(z2(t)zN(t)f(t,z1(t),,zN(t)))

這是一個以𝐳(t)為變量的一階系統,因此可以用歐拉法求解,也可以使用其他的一階數值方法。[1]

应用例题

设微分方程为 y=y ,初始值为 y(0)=1,试用欧拉方法求 y3的近似值,步长为 h=1

欧拉法為:

yn+1=yn+hf(tn,yn).

首先求f(t0,y0)(当n=0),f的定義為f(t,y)=y,因此有

f(t0,y0)=f(0,1)=1.

透過以上步驟,求得解曲線在点(0,1)的切线斜率。回顾直線斜率的定义:y变化量和t变化量的比值,亦記作Δy/Δt

接著是

hf(y0)=11=1.
y0+hf(y0)=y1=1+11=2.

重复以上步骤求出y2y3的值。

y2=y1+hf(y1)=2+12=4
y3=y2+hf(y2)=4+14=8

由于欧拉法属于递归算法,把運算整理成表格也許有助於避免計算錯誤。

yn tn y(t) h dy yn+1
1 0 1 1 1 2
2 1 2 1 2 4
4 2 4 1 4 8

局部截尾误差

欧拉法的局部截尾误差(Local truncation error, LTE)是指在实施一次欧拉法所产生的误差,是指经过一步的数值解y1与在t1=t0+h时精确解的误差。数值解y1由以下给出:

y1=y0+hf(t0,y0).

对于精确解,使用泰勒级数展开给出:

y(t0+h)=y(t0)+hy(t0)+12h2y(t0)+O(h3).

欧拉法的局部截尾误差为:

LTE=y(t0+h)y1=12h2y(t0)+O(h3).

y拥有三阶有界导数时,这个结果是成立的。[2]

结果显示:当步长h很小时,局部截尾误差近似与 h2 成比例。也就是说,欧拉法精确度不如其他的高阶方法(如龙格-库塔法Template:Le),这些方法的局部截尾误差与hpp>2)成比例。

全局截尾误差

全局截尾误差(Global truncation error, GTE)是指在一个固定时间t时的误差,但是很多步之后该方法需要以从初始时间到达该时间来计算。全局截尾误差可以看做是一个每一步的局部截尾误差的累积效应。[3] 经过的步骤數為(tt0)/h,而每步的误差则正比于h2。因此,可以预期全局截尾误差是正比于h的。[4]

这个直观的推测可以被嚴謹地證明。如果解y存在二阶有界导数,并且f關於y利普希茨连续的,那么全局截尾误差是有界的:

|GTE|hM2L(eL(tt0)1)

其中 M 是在给定区间内y的二阶导数的上界,Lf的利普希茨常数。[5]

这种精确的形式其实是没有什么意义的,通常情况下这个上界都會嚴重高估了欧拉法所造成的实际误差。[6]重要的是,这顯示了全局截尾误差是近似正比于h的,所以欧拉法被稱为是一阶的。[7]

相關條目

註腳

Template:Notefoot

参考资料

Template:Reflist

参考文献

Template:莱昂哈德·欧拉 Template:常微分方程数值方法