首页 理论教育 谱方法:高效解法Matlab微分方程

谱方法:高效解法Matlab微分方程

时间:2023-10-31 理论教育 版权反馈
【摘要】:图2-1 取区间上等间距的离散点要利用函数u在这些点上的取值u来计算u′和u″的近似值。由于xi+1在xi的前面,所以称之为1阶导数的向前差商。另外,式(2-2)的局部截断误差为O,从理论上讲,h越小则精度越高,但实际上当h过小时,u和u将是两个十分接近的数,它们相减会造成有效数字的损失,引起误差增加。

谱方法:高效解法Matlab微分方程

数值微分是根据函数在一些离散点的值计算它在某点的1阶导数或高阶导数近似值的方法。先从一个最简单的例子开始,在区间[a,b]上取一系列间距为h的点:x0,x1,…,xN,如图2-1所示。

978-7-111-51623-1-Part01-79.jpg

图2-1 取区间上等间距的离散点

要利用函数u(x)在这些点上的取值u(xi)来计算u′(xi)和u″(xi)的近似值。最直接的办法就是通过泰勒公式将u(xi+1)在x=xi处展开,整理可得:

978-7-111-51623-1-Part01-80.jpg

将上式右端的小量O(h)作为局部截断误差忽略掉,可得计算u′(xi)的公式(2-2)。由于xi+1在xi的前面,所以称之为1阶导数的向前差商。

978-7-111-51623-1-Part01-81.jpg

注意上式中的i是不能取到N的,除非还有条件给出u(xN+h)的值。或者,对于周期为b-a+h的周期函数u(x),可得u(xN+h)=u(x0),那么i=N时有u′(xN)=[u(x0)-u(xN)]/h。另外,式(2-2)的局部截断误差为O(h),从理论上讲,h越小则精度越高,但实际上当h过小时,u(xi+1)和u(xi)将是两个十分接近的数,它们相减会造成有效数字的损失,引起误差增加。所以h的选取不可过大或过小。

同理,还可以得到1阶导数的向后差商:

978-7-111-51623-1-Part01-82.jpg(www.xing528.com)

类似地,分别将u(xi+1)和u(xi-1)在x=xi处做泰勒展开,相减并整理,得:

978-7-111-51623-1-Part01-83.jpg

忽略小量O(h2),就是1阶导数的中心差商公式,它的精度要高于向前差商和向后差商:

978-7-111-51623-1-Part01-84.jpg

此外,分别将u(xi+1)和u(xi-1)在x=xi处做泰勒展开,相加并整理,得:

978-7-111-51623-1-Part01-85.jpg

忽略小量O(h2),即为2阶导数的中心差商公式:

978-7-111-51623-1-Part01-86.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈