ノイマン境界条件でポアソン方程式有限差分行列を書く


15

有限差分アプローチを使用してポアソン方程式を解くことに興味があります。ノイマン境界条件で行列方程式を書く方法をよりよく理解したいと思います。誰かが以下をレビューしますか、それは正しいですか?

有限差分行列

ポアソン方程式

2あなたはバツバツ2=dバツ

有限差分行列方程式で近似できます。

1バツ2Mあなたは^=d^

ここで、は行列で、およびは(列)ベクトルです。 N × N uは dは 1 × NのMn×nあなたは^d^1×n

ポアソン方程式の有限差分行列

ノイマン境界条件の追加

ノイマン境界条件は、境界で既知のフラックスを強制します(ここでは、境界がである左側に適用します)。バツ=0

あなたはバツ=0バツ=σ
、この境界条件を中心有限差分として記述し、

方程式のエラー。 NB。私はもともとここでエラーを犯し、エラーに署名しましたが、2で割っていませんでした。以下が修正されました。

あなたは2あなたは02バツ=σ

元のドメイン()の外側にメッシュポイントが導入されていることに注意してください。この項は、2番目の式導入することで除去できます。 あなたは0

あなたは02あなたは1+あなたは2バツ2=d1

この方程式は、新しいメッシュポイントの導入により、より多くの情報を取得することから生まれます。これにより、中心にある有限を使用して、二重導関数を境界として記述できます。あなたは1あなたは0

わからない部分

これらの2つの式を組み合わせてできます。動作を示すために、まず未知のものを整理し、あなたは0

あなたは0=2σバツ+あなたは2あなたは0=バツ2d1+2あなたは1あなたは2

次に、それらは等しく設定され、フォームに再配置されます。

あなたは2あなたは1バツ2=d12+σバツ

上記の行列方程式と同じ形式であるため、この形式を選択しました。項は、ここと元の方程式の両方で除算されることに注意してください。これは正しいアプローチですか?あなたはバツ2

最後に、この方程式を行列の最初の行として使用して、

左側にノイマン境界条件があるポアソン方程式(修正済み)

いくつかの最終的な考え、

  1. この最終マトリックスは正しいですか?
  2. より良いアプローチを使用できましたか?
  3. このマトリックスを記述する標準的な方法はありますか?

2
計算には2つのエラーがあります。中央の有限差分を割る必要があります。次に、も間違っています。マイナスはプラスでなければならないからです。2バツあなたは0=σバツ+あなたは2
vanCompute

3
これはで非常にうまく働いているルヴェックの有限差分テキスト、第2章
デビッド・Ketcheson

1
これらの問題はまた、scientificpython.net
post / 2013/01 /…

回答:



1

を除去できることを確認するための素晴らしい観察。 あなたは0

一歩下がって問題について考えます。ラプラス方程式を指定すると、基本的に各点はその近傍の平均であると述べられます。これは一般的にゴムシートとして視覚化されており、これらのことを考えるのに役立ちます。(ポアソンは、伸縮性のある点がほぼ同じです)

最も外側のエッジでソリューションサーフェスの値を指定すると、これらのポイントの空間でシートが「固定」されます。エッジで導関数によってシートを指定すると、同じ実際の形状、したがって導関数を維持しながら、空間でシートを平行移動する方程式を満たすソリューションがいくつもあります。

しかし、実用的な意味では、これは面倒です。行列は悪条件であり、ソルバーは予測不能に動作します。私が見た最も一般的なことは、またはソリューション空間に関連する定数を指定することによって、ソリューションを固定ポイントに単に「固定」することです。 あなたは0=0


1
それで、一般に、ポアソン方程式は、少なくとも1つのディリクレ境界条件で解かれ、一意の解が見つかるでしょうか?ノイマン境界条件は、ソースとシンクが含まれている場合にのみ意味をなすのは理にかなっていると思います。そうでなければ、無限の数の解があります。ただし、代わりに拡散方程式を採用すると、正しい物理学のためにノイマン境界条件が必要になる場合があります(たとえば、du / dx = 0の場合、境界を通る量の流れはありません)。これは私が本当に興味を持っていることです。上記の方法はノイマンBCを適用するための正しいアプローチですか?
boyfarrell

1
用紙のすべての面にノイマンBCを適用することはできません。その場合、独自のソリューションはありません。少なくとも片側で固定する必要があります。
vanCompute

@meawoppl:直接行列を解きながら固定小数点を指定するにはどうすればよいですか?
jvriesem

通常、行の1つの項のみを1、残りのゼロ、および表示したい解平面に対応するRHSの値に設定することにより、ポイントを定数に割り当てるだけです。
meawoppl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.