準備 — 1次元熱方程式の初期値-境界値問題の差分法 熱方程式の初期値-境界値問題のための格子点プログラム(ディリクレ境界条件) 熱方程式の有限要素法。
境界条件に対する差分方程式 Dirichlet 境界条件
境界条件に対する差分方程式 Neumann 境界条件
方程式がなくなってきたので、i = N の場合にも (7) が成り立つと仮定しましょう。また、i = N の場合にも 7) が成り立つと仮定しましょう。
差分方程式の行列・ベクトル表記
差分スキームの安定性 ( あらっぽい説明 )
の場合、安定性は行列 R のスペクトル半径 (固有値の最大絶対値) によって決定できます。その場合、R のスペクトル半径は 1 未満であることが保証され、差分スキームの安定性が導かれることが保証されます。 (例えば、Kurada [3] を参照)。
大まかなまとめ
順オイラー法、逆オイラー法、θ法の差分方程式は、 に対して差分近似を行うことで得られます。
少し前に、冗談半分で FreeFem++ 言語の微分法を使用してプログラムを作成しました。ご紹介させていただきます。まず λ の値を入力します。開始値を含むグラフを描画し、一時停止します。ウィンドウ内で [Enter] を押して再開します。速度が遅いので途中で止めた方が良いかもしれません。 )。
熱方程式に対する有限要素法
解法の方針
時間微分は有限差分法で近似し、空間微分は有限要素法で近似する。つまり、前のセクションの最後に書いたように、まず time の差を近似します。次に、任意の時刻 tn+1 で、(12b) と (12c) を組み合わせて、境界値問題として扱います。 in Ω つまり、限界は次のとおりです: un が既知の場合、-。
時間 tn+1 の差分近似を行った後、それを各時間 tn+1 における (12b) および (12c) と組み合わせ、これを Ω の境界値問題として考慮します。言い換えれば、境界条件は次のとおりです。 un が既知の場合、その形式は −△ un+1+ cun+1= F になります。これはポアソン方程式ではありませんが、ほぼ同じ方法で近似を解くことができた後、結合します。各時刻 tn+1 における (12b) と (12c) を用いて Ω の境界値問題として考えます。言い換えれば、境界条件は次のとおりです。un が既知の場合、その形式は −△ un+1+ cun+1= F になります。これはポアソン方程式ではありませんが、ほぼ同じ方法で解くことができます。
熱方程式に対する前進 Euler 法 余談
また、時間に関する導関数 ∂u/∂t の前方差分近似である前方オイラー法についてもお話したいと思います。私はこれについてあまり知らないかもしれませんが、この方法を使用するプログラムを見たことがありません。有限差分法と違って陽的な方法ではない(つまりun+1を求めるには連立一次方程式を解く必要がある)のでメリットはない(と思う)。安定性を調べることは意味があるので、数値実験を行うとよいでしょう。
これは有限差分法と違って陽的な方法ではない(つまりun+1を求めるには連立一次方程式を解かなければならない)のでメリットがないからだと思います。安定性を調べることは意味があるので、数値実験を行うとよいでしょう。
熱方程式に対する後退 Euler 法
秘訣は、ループの制御変数を i に設定し、問題に ,init=i を追加することです。このアイデアは、最初に i が 0 であるため init が false であるように指示し、i ̸= 0 であるため init が true であるように指示することです (そうでない場合、行列は各ステップで再構成されます)。連立一次方程式の係数行列は時間に依存しないことに注意してください (つまり、n 菊池文雄著、有限要素法入門、サイエンス出版のポアソン方程式問題の非定常版 (簡易版) int i,m= 10)。 ;。 UMFPACK と同じです。他の直接ソルバーが使用できない場合に LU で使用されます。
反復法の停止則を定義します。連立一次方程式のアルゴリズムを学習していないと、少し理解するのが難しいかもしれません...)。連立一次方程式。知らないとちょっとわかりにくいかもしれません…)。
熱方程式に対する θ 法
(18) は短くて覚えやすく、(19) はプログラムを書くのに便利です。 (18) は短くて覚えやすく、(19) はプログラムを書くのに便利です。
実習課題
3 ある程度分割を絞り込んで init= 指定の効果を調べる 指定しないと遅くなり、指定せずにsolver=CGにすると少し速くなりますが。 CG メソッドを使用する代わりに、ダイレクトメソッドで init= を指定すると、高速になるようです。 ) 実行時間は time コマンド (time FreeFem++ heatB.edp 有限要素法の場合はこのような単純な評価条件は実現できませんが、θ が 1 に近いか 0 に近い場合、 、 ) を使用して測定できます。 Δtを変更して安定して計算できるか試してください。 )。
6 選択した問題 (ドメインの変更など) について数値実験を試してください。指定しないと遅くなり、指定せずにsolver=CGとすると遅くなります。少し高速になりますが、CG メソッドの代わりに直接メソッドを使用し、init= を使用することもできます。 )。
その他
FreeFem++ の real データの入出力の書式指定
FreeFem++ の real データの入出力の書式指定 例
標準入力 cin, 標準出力 cout, 標準エラー出力 cerr
通常、標準入力は端末のキーボード入力に関連付けられ、標準出力は端末画面への文字の出力に関連付けられ、標準エラー出力も端末画面 (I/O) への文字の出力に関連付けられます。現時点では、C プログラムで printf() を使用する代わりに、式 cout <<, を使用します。
数値の書式指定
外部ファイルとの入出力