お世話になります。長文で失礼します。
最近になって偏微分方程式の数値解析の勉強を始めました。
1)早速質問したいですが、二次元での拡散方程式を、
陰解法で数値的に解く場合、途中で出てくる連立方程式の係数行列は、
どのような構造になるのでしょうか。
手持ちの教科書のすべてが一次元の場合を例示しており、
係数行列は三重対角行列になる、と説明しているのですが、
二次元になると係数行列はどうなるのでしょうか。
試しに「陰解法 対角行列」とググってみると、
「5重対角行列」と記載のあるリンクが出てくるのですが、
http://www-mmc.es.hokudai.ac.jp/else/cdrom/main_ …
実際に読んでみても、「疎な5重対角行列」と言及されるだけで、
具体例は示されていませんでした。
結局、2次元問題の陰解法の実装にあたって
係数行列をどのように定義すればよいのか分からず、
添付の画像の式3ようにインデックスを振り直し、
計算領域の行列uをベクトル化(式4)して、
疑似的な五重対角行列Aを無理矢理定義しました(式6、周期境界条件)。
果たして合っているのでしょうか。
一応、空間刻みと時間刻みを揃えて陽解法と計算結果を比べましたが、
同じような挙動になりました。
合っていない場合、係数行列はどのような構造になるのでしょうか。
2)上記の方法が合っているのだとすると、
2次元問題の陰解法で用いる「5重対角行列」というのは、
式6の係数行列のように対角成分が0の隙間が出来てしまい、
厳密な「多重対角行列」の定義から外れると思うのですが、
この理解は正しいでしょうか。
むしろ逆に、対角成分が0の隙間が出来てしまっていても、
「~重対角行列」と呼んで良いものなのでしょうか。
3)同様に三次元に拡張した陰解法スキームを考えると、
係数行列は二次元のときよりも広い0の隙間を持った、
七重対角行列になると思うのですが、この理解も合っているでしょうか。
どなたか詳しい方がいらっしゃいましたら、
ご回答よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
No.3へのコメントについてです。
どうもまともに読んでいただけていないようなんで、ま、どうでもいいんですが。> 私が例示した行列uは4x4行列で、係数行列Aは16x16行列だったのですが、
> これを「2n+1」の係数行列に直した方が良い
係数行列のサイズは、当然ながら、空間をいくつに分割したかによって決まります。たとえばn=2において空間を100×100に分けたとすると10000個の成分がある。そのうちの「合計2n+1個の成分に0でない係数がついた一次方程式を連立したもの」、すなわち10000×10000の行列の各行に5個だけ0でない係数が入っている。この行列の10000×5個の成分だけが0でないということです。
> なぜ共役勾配法だけ
「行列はなるべく相手にしたくないという場合」、これなら行列を直にいじくらなくても良いからです。ことにご質問の例のように拡散係数が位置依存性を持たない(定数である)場合には、10000×(2n+1)個の成分を保持することも必要ない。
辛抱強く何度も対応して頂き、ありがとうございます。
言い換えて頂いたおかげで、何とか理解できたと思います。
ANo.1にて、
>空間を四角く切ることにすると、一つのセルに隣接するセルがn次元の場合2n個あるんで
という表現を、「一つのセルに隣接するセルがn次元である場合」と読んでしまい、
数値1個が入る各セルが何故か「n次元」?と意味不明なまま読み進めてしまいました。
直後の「2n個あるんで」も、何が2n個あるのか分からないまま読みました。
「n次元の空間を四角く切ることにすると」という意味だったのですね泣
はじめに頂いた文面を初見で理解できない程度に、私の到達度の初心者ぶりを自覚できました。
また、共役勾配法のメリットについても追記頂きまして、ありがとうございました。
自分で実装してみて、メモリ節約のありがたみを体感してみようと思います。
この度は、ありがとうございました。
No.3
- 回答日時:
ANo.1へのコメントについてです。
> 少なくとも質問に対する回答が優先的に欲しい
3つに分けるまでもなく、まとめて2n+1だと申し上げたんですがね。
追記ありがとうございます。
ご記載の内容はシンプルで理解できましたが、私が初学者のため、
ごまかさずに問題を細分化して個別に確認したかった、という次第です。
不満点があるとすれば、
私が例示した行列uは4x4行列で、係数行列Aは16x16行列だったのですが、
これを「2n+1」の係数行列に直した方が良い理由は、
先のご説明だけでは分からなかったので、回答意図の曖昧さを感じました。
また、(半)陰解法の中でもクランク・ニコルソン法やADI法、畳み込み法など、
いくつか戦法があると思うのですが、なぜ共役勾配法だけを例示して下さったのか、
「自分が好みでよく使うんですが」程度の理由でも構わないので、
オススメの根拠が欲しかったです。この点も回答意図の曖昧さを感じました。
入門者の学習補助というより中級者の向学心を誘うようなスタンスを感じ、
私の需要とは今回は合致しませんでした。
(回答する側にとっては判断が難しいでしょうが笑
ありがとうございました。
No.2
- 回答日時:
全く回答にはなっていないのですが,知っている範囲でお答えしますと,
1 ) 解き方は正しいと思います。
2 ) 示された行列は対角行列ではなく,帯行列です。
対角行列の定義は質問者様の認識で正しいです。
ただ,自分は帯行列になると教わったんですよね。
3 ) おっしゃる通りです。
残念ながら数学が専門ではないので,
そのような方がいらっしゃれば,そちらの意見の方が正しいかと思われますり
早速ご回答ありがとうございます。
1)合っているようで安堵しました。
2)「帯行列」という用語は耳にしたことがあったのですが、
卒業した学部カリキュラムに線形代数の講義が無かったため、
定義は知りませんでした。勉強になりました。
クリティカルな回答を頂きまして、大変感謝申し上げます。
ご提案通りに、もう少し他の回答も待ってみたいと思います。
No.1
- 回答日時:
単なる拡散方程式(熱方程式)なら、それこそ陽解法が適しているんじゃないでしょうかね。
最初は空間を粗く切ってざくざく計算し、収束に近づいたらメッシュを小さくする、という風にやれば速くて、行列には出番なし。というのはさておき、ともあれ陰解法でやってみたいと。
空間を四角く切ることにすると、一つのセルに隣接するセルがn次元の場合2n個あるんで、合計2n+1個の成分に0でない係数がついた一次方程式を連立したものを解く必要がある。ご質問にあるような、端っこに「折り返し」の成分がついた「隙間のある2n+1重対角行列」っぽいもの、ってことです。まともに逆行列を計算してたら大変。
行列はなるべく相手にしたくないという場合、答のほうから探っていく、すなわち近似解を改良していく方法があります。近似解の出発値は陽解法の1ステップで計算すればいいでしょう。
Ax = y
という方程式の近似解 x*の持つ誤差εを
Ax* = y + ε
としますと、x*に微小変動Δxを加えて
E = Σ|ε|^2
が小さくなるように改良する、という、非線形最小二乗法でおなじみの手続きを繰り返す。Δxを決める手法は多々ありますが、行列の計算をしないで済ませるには最急降下法を使うことになる。Aはヤコビアン
A[i,j]=∂ε[j] /∂x*[i]
になっているわけですから理屈は簡単ですし、適当な加速のテクニックを組み合わせることができます。ただし、どうせこれ、Δt刻みの1ステップにすぎないのですから、xにあんまり精度を求めてもしょうがない。このへんの匙加減がコツってことでしょう。
早速ご回答ありがとうございます。
ご説明頂いた方法は、「共役勾配法」のことでしょうか。
まだ実装したことはないですが、この方法の有効性も確認したいと思います。
本文には3個ほど質問があったのですが、
長文だとやはり読んで頂けないものなんですかね汗
建設的で発展的な情報は勿論歓迎するところなのですが、
少なくとも質問に対する回答が優先的に欲しいところでした笑
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 回答の意味について 3 2023/07/06 14:14
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- 数学 実数同士の全単射写像について 2 2023/07/05 17:12
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- 数学 すべての自然数とすべての実数を1対1で対応させる(すべての実数を一列に並べる)方法について 3 2023/05/26 17:14
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- 数学 線形代数の正規直行系についての問題がわからないです。 1 2022/07/16 11:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3行3列の行列の和と積の計算...
-
線形代数です。 正方行列A,BがA...
-
逆行列(AB)^-1について
-
行列の式の英語読み方について
-
3行3列の逆行列(ルートを含む)
-
【数値解析】行列の可約、既約...
-
直交補空間の問題が分かりませ...
-
零行列 O のことも 零因子 と呼...
-
回転行列の4行4列の意味について
-
matlabで条件をみたしたデータ...
-
大学数学を忘れました。3×3行列...
-
行列と行列式の違いは?
-
行列式計算で答が二通りでてしまう
-
線形代数学のユニタリ行列の質問
-
線形代数
-
フィボナッチ数列の極限
-
ヤコビアン行列の問題なのです...
-
逆行列の高速解法
-
行列、連立一次方程式の問題です。
-
行列について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3行3列の行列の和と積の計算...
-
数学「行列」の実生活への応用
-
matlabで条件をみたしたデータ...
-
線形代数です。 正方行列A,BがA...
-
複素数を含む行列の逆行列は存...
-
回転行列の4行4列の意味について
-
3行3列の逆行列(ルートを含む)
-
高校数学で教わる行列っていっ...
-
行列と行列式の違いは?
-
正方行列の最小多項式の求め方は?
-
回転した楕円の長径短径、媒介...
-
表計算で行列の積を計算する方...
-
不完全LU分解前処理つき双共...
-
4×4行列の逆行列について
-
行列の式の英語読み方について
-
ラウスの安定判別法
-
Statviewでの解析で
-
Zパラメータの求め方
-
にゃんこ先生の自作問題、ヴァ...
-
行列式計算で答が二通りでてしまう
おすすめ情報
「帯行列」の存在を教えてくださったANo.2の回答もありがたかったのですが、
今回は情報量が多かったANo.4をベストアンサーに選ばせて頂きます。
ありがとうございました。。。