Loading [MathJax]/jax/output/CommonHTML/jax.js

2021年11月21日日曜日

差分近似の高精度化

微分の差分近似は、テイラー展開後に目的の項について整理するのみです。

簡単に高次精度化ができるようですが、今まで気にしたことがありませんでした。
反省も込めて、整理です。

**************************************

1次精度‐1階微分
前進差分(テイラー展開)
f(x+Δx)=f(x)+Δxf(x)1!+Δx2f(x)2!+Δx3f(x)3!+Δx4f(4)(x)4!+Δx5f(5)(x)5!+ f(x)=f(x+Δx)f(x)ΔxΔxf(x)2! =f(x+Δx)f(x)Δx+O(Δx)

 後退差分(テイラー展開)
f(xΔx)=f(x)+Δxf(x)1!+Δx2f(x)2!+Δx3f(x)3!+Δx4f(4)(x)4!+Δx5f(5)(x)5!+ f(x)=f(x)f(xΔx)Δx+O(Δx) 

2次精度‐1階微分
中心差分(前進差分‐後退差分)
f(x+Δx)f(xΔx)=2Δxf(x)1!+2Δx3f(x)3!+2Δx5f(5)(x)5!+ f(x)=f(x+Δx)f(xΔx)2ΔxΔx2f(x)3! =f(x+Δx)f(xΔx)2Δx+O(Δx2)

2次精度‐2階微分
中心差分(前進差分+後退差分)
f(x+Δx)+f(xΔx)=2f(x)+2Δx2f(x)2!+2Δx4f(4)(x)4!+2Δx6f(6)(x)6!+ f(x)=f(x+Δx)2f(x)+f(xΔx)Δx22Δx2f(4)(x)4! =f(x+Δx)2f(x)+f(xΔx)Δx2+O(Δx2) 

2次精度‐1階微分
中心差分(2Δx)
f(x+2Δx)=f(x)+2Δxf(x)1!+22Δx2f(x)2!+23Δx3f(x)3!+24Δx4f(4)(x)4!+25Δx5f(5)(x)5!+ f(x2Δx)=f(x)+2Δxf(x)1!+22Δx2f(x)2!+23Δx3f(x)3!+24Δx4f(4)(x)4!+25Δx5f(5)(x)5!+ f(x+2Δx)f(x2Δx)=22Δxf(x)1!+24Δx3f(x)3!+26Δx5f(5)(x)5!+ f(x)=f(x+2Δx)f(x2Δx)4Δx22Δx2f(x)3! =f(x+2Δx)f(x2Δx)4Δx+O(Δx2) 

4次精度‐1階微分
中心差分(Δx, 2Δx)
f(x+Δx)f(xΔx)=2Δxf(x)1!+2Δx3f(x)3!+2Δx5f(5)(x)5!+ f(x+2Δx)f(x2Δx)=22Δxf(x)1!+24Δx3f(x)3!+26Δx5f(5)(x)5!+ 8{f(x+Δx)f(xΔx)}{f(x+2Δx) f(x2Δx)}=12Δxf(x)+O(Δx5) f(x)=8{f(x+Δx)f(xΔx)}{f(x+2Δx) f(x2Δx)}12Δx+O(Δx4) 

4次精度‐2階微分
中心差分(Δx, 2Δx)
f(x+Δx)+f(xΔx)=2f(x)+2Δx2f(x)2!+2Δx4f(4)(x)4!+2Δx6f(6)(x)6!+ f(x+2Δx)+f(x2Δx)=2f(x)+23Δx2f(x)2!+25Δx4f(4)(x)4!+27Δx6f(6)(x)6!+ 16{f(x+Δx)+f(xΔx)}{f(x+2Δx)+f(x2Δx)}=30f(x)+24Δxf(x)2!+O(Δx6) f(x)=16{f(x+Δx)+f(xΔx)}30f(x){f(x+2Δx)+f(x2Δx)}12Δx2+O(Δx4) 

 

0 件のコメント:

コメントを投稿