pdsolve/numeric/errorcontrol - 誤差近似および一定の許容誤差を含む PDE の数値解を求める
使い方
pdsolve(PDE, conditions, numeric, meth, options)
パラメータ
PDE - 単独の時間依存型二変数偏微分方程式、またはそれらの集合かリスト
conditions - 初期条件および境界条件の集合かリスト
numeric - 数値解を得るために指示するキーワード
meth - ( オプション ) method=theta あるいは method=theta[v] 形式の計算法の記述
options - ( オプション ) keyword を 'errorest, 'errortype', 'abstol', mintimestep, maxtimestep のいずれか一つとした keyword = value 形式の方程式
|
説明
|
|
•
|
このページは PDE の数値解法の誤差評価と誤差制御の使用に関するオプションと能力について記述しています。
|
•
|
誤差評価を含む PDE の解は、theta のインデックス ( meth=theta[v] の v ) が総ステップの比率として近似に使用する点の時間変数に関する値を与えるスキームの theta 族で制御されています。デフォルトは、二階の解度と規則的な安定性を与えるように 1/2 となっています。値 0 は明確な計算法を意味し、値 1 は ( 一般的な ) 最高の安定性を含む完全に暗黙な計算法を意味します。
|
•
|
これらには誤差評価を含む PDE のための二つの操作方法があります。一つ目は単純に解の近似誤差を見ることができる情報を提供し、二つ目は指定された有界区間の中の単位ステップあたりの誤差を保存するような自動制御作用を提供します。
|
•
|
誤差評価の過程に関する情報は、以下の Details で提供されています。
|
|
|
オプション
|
|
|
誤差評価を計算するか否かを指定します。もし誤差制御 ( 'abstol' を指定 ) を使用すれば、これは自動的に正しいものとなります。
|
|
- オプション 'accumulated' ( デフォルト ) は、問題の全ての最初の時間ステップの形式のための誤差評価の和として与えられた時間での誤差評価を設定します。このオプションは、近似誤差境界を含む解を得る場合に非常に役立ちます。
|
|
- オプション 'singlestep' は、ステップの流れのための局所的な誤差評価の設定をします。このオプションは、最も問題のある局所的な誤差を決定する際に非常に役立ちます。
|
|
単位ステップあたりの時間誤差と空間誤差の局所的な評価の上界の設定に加え、このオプションの使用は時間適応が使用されるべきであることを表しています。
|
|
注意 : この上界は二つの誤差評価で独自に使用され、時間の離散化によって別々に空間の離散化と誤差による誤差制御のために使用されることを意味しています。もし端から端までの総誤差境界が必要とされたならば、'abstol' は目的の値の半分で指定されるべきです。
|
|
誤差を抑える ( 空間メッシュは固定されています。 ) ために時間ステップだけが調整できたと考えると、もし空間誤差評価が許容誤差を超えた場合、積分は特有の誤差メッセージを含んで停止します。
|
|
このオプションは、要求された解の計算の時間ステップの最小値の絶対値を設定します。デフォルトでは、初期時間ステップ ( timestep 値によるデフォルトか指定されたもの ) の 1/1000 となっています。
|
|
このオプションは、要求された解の計算の時間ステップの最大値の絶対値を設定します。デフォルトでは、初期ステップ ( timestep 値によるデフォルトか指定されたもの ) の 100 倍となっています。
|
•
|
誤差評価は、返されたモジュールの plot, animate, plot3d, value 法のいずれかを指定した従変数で使用することができます。
|
|
全く単純に従変数 u(x,t) で、時間誤差は terr(u(x,t)) として指定でき、空間誤差は serr(u(x,t)) で指定でき、そして総合的な誤差 ( ちょうど時間誤差と空間誤差の和 ) は err(u(x,t)) で指定することができます。
|
|
追加したショートカット terr(), serr(), and err() は、最大時間の表示、あるいは全ての解の計算の総合的な誤差のために設定されます。これは入力した PDE が、一階以上、あるいは連立 PDE であった場合にのみ使用することができます。
|
|
|
詳細
|
|
|
誤差評価が視覚的な誤差評価と誤差制御の両方で使用された場合は、PDE および連立 PDE のための単純で局所的な誤差評価となります。本質的には、異なるメッシュ上で解を計算し、解と誤差評価の差を使用しています。
|
|
空間誤差評価は、より粗い空間メッシュで別に計算された解との比較で得られますが、同じ時間ステップを用いています。これは O(h^2) の局所的な打切り誤差 ( h は空間変数のメッシュ間隔 ) の評価を与えます。
|
|
時間誤差評価は、より大きい時間ステップを含む別に計算された解との比較で得られますが、同じ空間メッシュを用いています。これは O(k^2) あるいは O(k) の局所的な打切り誤差 ( k は時間ステップ ) の評価を与えます。
|
|
これらの評価は局所的であることが重要な注意であり、これらは時間 t=t1 での解と時間 t=t2 での解とで大きい変化を得るような摂動問題では保障されません。
|
|
|
例
|
|
誤差評価を含む単純な一成分の波動方程式を考えます。二つのステップ幅の集合による比較を行います。
>
|
PDE := diff(u(x,t),t)=-diff(u(x,t),x);
|
| (4.1) |
>
|
IBC := {u(x,0)=sin(2*Pi*x),u(0,t)=-sin(2*Pi*t)};
|
| (4.2) |
>
|
pds := pdsolve(PDE, IBC, numeric, time=t, range=0..1,
errorest=true, timestep=1/16, spacestep=1/16);
|
| (4.3) |
>
|
pds:-plot([u(x,t),
[u(x,t)+err(u(x,t)),color=grey],
[u(x,t)-err(u(x,t)),color=grey]],t=5);
|
>
|
pds:-settings(timestep=1/32,spacestep=1/32);
|
>
|
pds:-plot([u(x,t),
[u(x,t)+err(u(x,t)),color=grey],
[u(x,t)-err(u(x,t)),color=grey]],t=5);
|
誤差評価と真の誤差の ( この問題の解が既知として ) 比較を行います。
>
|
esol := sin(2*Pi*(x-t));
|
| (4.4) |
>
|
pds:-plot([u(x,t)-sin(2*Pi*(x-t)),
[err(u(x,t)),color=grey]],t=5);
|
この場合、誤差評価はやや悲観的です。
誤差制御を使用した形成衝撃波層を含む非線形 PDE を考えます。
>
|
PDE := diff(u(x,t),t)=-diff(u(x,t),x)*u(x,t);
|
| (4.5) |
>
|
IBC := {u(x,0)=exp(-16*(x-1/2)^2)/2,
u(0,t)=exp(-4)/2*exp(-8*exp(-4)*t)};
|
| (4.6) |
>
|
pds := pdsolve(PDE, IBC, numeric, time=t, range=0..2,
spacestep=1/128, timestep=1/64, abstol=1e-2);
|
| (4.7) |
Error, (in pdsolve/numeric/plot) unable to compute solution
for t>.383973957308847979:
spatial error estimate exceeds tolerance. consider
decreasing 'spacestep'
| |
使用者は空間ステップ幅を減少させなければなりません。いくつかの実験によって t=0.5 で以下を得ることができます。:
>
|
pds:-settings(spacestep=1/1024):
pds:-plot(t=0.5,numpoints=256);
|
さらに、この時間での空間誤差は以下のようになります。
>
|
pds:-plot(serr(),t=0.5,numpoints=256);
|
|
|