プロが教えるわが家の防犯対策術!

関数f(x,y)の2次導関数である∂f(x,y)/∂x∂yを数値計算により,
より高精度で計算したいと考えているのですが,∂f(x,y)/∂x∂x
のように同じ変数に対する偏導関数の離散化方法しか見つけることが
できませんでした.

そこで,ご存じの方がいらっしゃいましたら,∂f(x,y)/∂x∂yのような2変数の導関数の高次計算法をご教示頂けないでしょうか.
宜しくお願い致します.

またそれらについて詳細に記述された文献等もあれば,教えて頂ければ幸いです.

A 回答 (2件)

2階偏微分方程式を差分法を用いて離散化する時は境界内をx方向にh、y方向にkのメッシュを掛けて、その交点(i,j)における値f(i,j)と隣接する点との関係に書きなおす必要があります。

ご質問の,∂f(x,y)/∂x∂yは
  ∂f(x,y)/∂x∂y=(f(i+1,j+1)-f(i+1,j-1)-f(i-1,j+1)+f(i-1,j-1))/(4hk)
で与えられます。さらに隣までの関係を取り入れれば差分式としての精度は上がりますが、私の経験では面倒なだけで上式が扱いやすく、メッシュの切り方が適切ならば非線形の場合も収束もが早かったように思います。
境界条件も差分化して適切に処理すれば数値解としての正解に辿りつくはずです。

この回答への補足

ご回答ありがとうございます.

上記の方法の高精度化についてお尋ねしたいのですが,
上記の方法は2次精度の中心差分法をx方向偏導関数に対してy方向に用いることで算出される式だと思うのですが,精度が現実の現象に対して大きく問題となる場合には,同様に4次精度の中心差分法をx方向偏導関数に対してy方向に用いればよいのでしょうか.(あるいはその逆)

もし宜しければご回答を宜しくお願い致します.

∂f(x,y)/∂x∂y ≒ (fx(i,j+1)-fx(i,j-1))/(2h) ≒ (f(i+1,j+1)-f(i+1,j-1)-f(i-1,j+1)+f(i-1,j-1))/(4hk)

補足日時:2009/05/09 10:57
    • good
    • 1

No.1です。

私の経験では、境界条件が高次差分に対応している場合が少なく、適当に処理すると後で大きな誤差となってしまうため、使わないことにしています。それよりもメッシュを細かく切る方が良いと思います。4次差分にした場合、境界条件は2階微分を与える必要があると思いますが、そちらの検討結果も勘案してください。

この回答への補足

たびたび申し訳ありません.
上記の内容についてですが,計算メモリで制限を受けている場合は手法の改善というよりは並列化というのが,現在の数値計算のセオリーになっているのでしょうか.

補足日時:2009/05/09 12:25
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.高次にすると境界におけるゴーストポイントが増えるので境界条件が複雑になり,高次差分による高精度化よりも格子間隔自体を小さくしたほうがよいということですね.参考にさせて頂きます.

お礼日時:2009/05/09 12:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!