• ベストアンサー

2階微分の差分法

こんにちわ。 現在、差分法にてプログラムを作っています。 やりたいことは、場所によって空間分解能を変え、重要な部分は細く計算し、そうでないところは分解能を下げて粗く計算したいと思っています。 その際、2階微分の空間分解能が変わる境界での差分はどのように書けばいいのでしょうか? 何か確立された方法をご存知であれば教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.1

私もそんなに詳しくはないので間違っていたらすいませんが、 差分法はグリッドの間隔を変更するのに向いていないので有限要素法が開発されたのではないのでしょうか?

symmetry5
質問者

お礼

回答有り難うございます。 有限要素法というのも勉強してみます。

関連するQ&A

  • 微分法・積分法は知ってるけど「差分法」って一体何ですか?

    差分法というのを聞いたんですけど、一体差分法って何ですか? 微分積分系(?)ですか?それとも全く関係の無い数学ですか? 差分法とは何で、どういう計算法(?)か軽く教えてください。

  • 二階導関数の差分近似について

    二階導関数の差分近似について 下記のように空間的に変化する係数を含む二階の微分項を点xrで近似することを考えた時、差分定式化すると下記のようになるのですが、前進差分、後退差分をそれぞれ用いること、またa(x)の項だけ何故±1/2の間で差分をとるのかが分かりません。差分についての参考書を見ると、xrの前後に二つの傾きをまず考え、二階導関数はいわば”傾きの傾き”を表わすので・・・から即この式が出ているのですが、その考えもよく分かりません・・。どなたか説明していただけませんでしょうか?

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって

  • 非線形偏微分方程式の数値解法(差分法)について

    非線形偏微分方程式(具体的にはKdV方程式)を数値的に解こうとしていますが、 式の立て方が分かりません。 漸化式のように次々と値を求めていけば良いのは分かるのですが、 Web上にある差分法の解説はどれも移流方程式のような、1階の微分方程式を例に上げたものあばかりで、KdV方程式のように3階微分が入った場合、どのようにそれを応用すれば良いのでしょうか。 例えば、Lax-Wendroff scheme( http://en.wikipedia.org/wiki/Lax–Wendroff_method ) を用いてKdV方程式を解く場合、どのような式で計算すれば良いのでしょうか。 ご存知の方がいらっしゃれば教えてください。

  • 境界における差分公式

    現在,微分方程式を数値解析にて解いております. 普通の差分公式については,検索して見つけることができたのですが,境界における二階微分を表す方法がわかりません. ∂f(j)/∂x=(1/2Δ)*f(-3f(j)+4f(j+1)-f(j+2) というような,1階微分での表し方は見つかりましたが,そもそもこれの導出もよくわかりません. どなたか,教えていただけないでしょうか?

  • 3次元の差分法について

    よろしくお願いします。 現在、3次元の差分法について勉強しています。プログラムにて電位や電界の計算を行っているのですが、本やサイトでは簡単にするために2次元で扱っているものが多いです。 何かお勧めの参考書やサイトがあれば教えていただけますでしょうか。 よろしくお願いします。

  • 差分法の精度(電位の計算)

    よろしくお願いします。 現在、差分法により電位を求めています。 ポアソン方程式を差分化してプログラムにより電位を求め、それと電位の式の計算結果をと比較しているのですが、差分法の計算結果があまり近い値となりません。 差分法の精度とはどのくらいなのでしょうか? 電荷がない場合では完璧に一致するのですが、電荷があると一致しません。ポアソン方程式の一般的な解はまだ導き出されておらず、電荷も常に一定ではないので十分な精度はない、みたいなことをちらっと聞いたこともあるので、もしやと思ったのですが、そもそも差分法の電位の計算とは一致しないものなのでしょうか? よろしくお願いします。

  • C言語による差分法に関して

    C言語で非線形偏微分方程式を陽解法による差分法を用いて数値計算しております。 対象となる物体が非常に小さいため、時間刻みを非常に小さくして行っております。 n=40;  //分割数 d=30e-6; //物体の長さ dt=1.0e-15; //時間刻み幅 loop=1.0e+5; //ループ回数(最終的にはもっと増やしますが、今はこの程度) プログラムの詳細な式や値は省略して double T[?][?] //?のところがわかりません。 for(i=0;i<=40;i++) { T[i][0]=・・・ //初期条件 } for(j=0;j<=loop;j++) { T[0][j]=・・・ //境界条件 T[40][j]=・・・ } //差分計算 for(j=0;j<=loop;j++) { for(i=1;i<40;i++) { T[i][j+1]=・・・・・・・・・・・・・・・・・ } } というような流れなのですが、はじめの配列宣言のT[?][?]の?に入れるべき値はなんでしょうか? 分割の数とでループ回数に1をたしたもの(0があるので)かと思いT[41][100001]としたのですが「Segmentation Fault」となってしまいます。一方、T[50][20000]のようなよくわからない数をいれると一応エラーは出ずに動きますが値が変な気がします。(固定したはずの境界条件が変わってしまいます。) この境界条件が変わってしまうのは配列の宣言に問題があるからのように感じました。 また、もしこの境界条件が変わってしまうのが他の要因にあるとすればどこであると考えられるでしょうか?

  • FEM有限要素法について

    物理シミュレーション手法の1つのFEMについてお尋ねします。 ※いつもは差分法を用いて計算をしている人間からみた漠然とした感覚での質問です。 1.FEMの基本的な考え方は内挿関数(いろいろ名称がありますが)を使って節点上で定義された未知数を領域内部に連続的に展開し、方程式(重み関数をかけて)を領域内部で積分するという展開になると思います(がラーキン法)。このとき部分積分を用いて弱形式に変換したりするわけですが、この部分積分は紙と鉛筆を使って数学理論的に実施するものなのでしょうか。もともと解く方程式の複雑さによってはなかなか難しいのではないかと思いますが。どのような場合でもできるのでしょうか。 (差分だと3回微分でも何とかやることができそうです。もちろん困難もありますが見通しはつきやすい。) 2.自然境界条件(境界での微分値が指定されている)ところの説明でも部分積分が出てきます。自然境界条件の設定の考え方のコツを教えて頂きたいのですが。本を読むとポテンシャル理論を使う実例が示されていたりしており、ポテンシャル問題でない場合はどうするのかなと思います。 基本境界条件(境界での値が指定されている)についてはマトリックスの一部に000010000など使うと問題なく指定できます。これはすごくわかりやすいのですが。 3.FEMはラプラス方程式、ポアソン方程式、などよく知られた割りと形式的に簡単に見える方程式の説明が多いのですが、微分の回数が増えるとか自分で式を作ったような場合実行するのが難しいものでしょうか。前述しましたが、3回微分の場合、1回積分して2回微分になるから内挿関数が直線的だと2回微分がゼロとなりますから使えないということになりそうです。差分とはだいぶ違うな思います。解きやすい問題は行列にしたら差分と同じということになるようですが。 以上、よろしくお願いします。漠然とした質問と言いながら長くなってしまいました。

  • 2次元ラプラス方程式を差分法で解くというプログラムなのですが、

    2次元ラプラス方程式を差分法で解くというプログラムなのですが、 ・プログラムの流れ ・具体的にどのような計算をしているのか を教えていただけないでしょうか? 面倒だとは思いますがお願いします。 以下プログラムURL http://www.geocities.jp/laprog321/