A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#2ですが、反復法(ガウスザイデル・ヤコビ・CG法など)で解く場合、解が1つでもあれば、そこに収束します。
つまり、解けます。どういうことかというと、連立1次方程式を解く場合、数学的に解が1つしかない場合と、解が無数にある場合があり、そのような方程式であれば解くことができるということです。
解が1つしかない場合とは、中学や高校で学習するような1次方程式のことです。
解が無数にある場合とは、不定方程式となる場合、つまり係数マトリックスのランクが次元数より少なくなる場合です。
もちろん、その中でも解がない場合は反復法でも解けません。
画像の方程式は、解いていないのでわからないですが、多分解が1つしかない場合だと思います。
その場合だと、反復法でも直接法(ガウスの消去・LU分解法など)でもとけます。ただし、反復法で行う場合は、その解の初期値が必ず問題になります。この与え方が悪いと、解が見つからない場合があります。だいたい零ベクトルとして与える場合が多いのではないでしょうか。
また、直接法では解が1つしかない場合についてしか解けません。だから、解が無数にある場合の方程式は解くことができません。
それに対して、反復法ではそのような方程式でも解くことができます。その解に近づいていくはずです。もちろん、直接法で求められる値に対して、少々誤差がででくるとは思います。
その点、反復法のほうが強い方法であるといえます。
No.2
- 回答日時:
下のようなフォーマットで
3 //次元数
3 12 27 //係数マトリクス
5 80 405
7 448 5103
27 243 2187 //右辺のベクトル
とか入力ファイルを作って、ファイル入力して解くというのはどうでしょうか?
次元数から、Cであればmallocを、c++であればnewを使って動的にメモリを確保すれば、係数マトリックスや、解ベクトル、右辺のベクトルに入力できて、まず、解く前段階の処理を行うことができます。
(”任意の次元数に対応できる”をこれで満たせると思います)
あとは、ソルバ(解法)ですが、ヤコビ・ガウスザイデル・ガウスの消去などで行うのであれば、全て、同じ入力形式にしてしまうといいと思います。つまり、ソルバを呼び出して、連立方程式を解かせるときに、それぞれの関数(またはクラスの関数)の入力形式が同じであると、文字を少し変えるだけで違うソルバを用いることができるからです。
[そのようにすると、C++でクラスを使うとき、クラス名を変えてしまうだけで、違うソルバで解いたりすることができます]
で、キモのソルバですが、アルゴリズムはもちろん、プログラムはインターネット上に落ちていると思います。しかも、図書館などで数値計算に関する本は、とても数え切れないくらいあります。初心者向けに書かれた本から、上級者向けまでさまざまです。正直、ネットよりも本の方がしっかり書いてると思います。
たとえば、ガウスザイデル法のプログラムでしたら、下のURLにありました。もちろん、動作確認は行っていないので、自分で使えるような形にして、プログラムを作成してください。
参考URL:http://akita-nct.jp/yamamoto/lecture/2007/5E_com …
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語のサイコロを100回振って...
-
プロダクションコードとは?
-
指定したフォルダーを最前面表...
-
vba listviewにおけるtextのAli...
-
Arduino nano(アルドゥイーノ ...
-
初級者の質問――time_tについて
-
プログラミングの問題と解答例...
-
C言語primeについて
-
マイコンからプログラムを読み...
-
c言語についてで、星占いをswit...
-
Labviewって・・・
-
ネットワークコマンドをプログ...
-
VB6 画面サイズ変更について
-
VBAにてTIFFから画像を取込みた...
-
2値化した画像の黒い部分のピク...
-
コードプロテクトについて
-
積分を台形則を用いて計算する
-
VBコンソールアプリ(.NET Frame...
-
連立方程式
-
MATLABによるニューラルネット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プロダクションコードとは?
-
vba listviewにおけるtextのAli...
-
指定したフォルダーを最前面表...
-
Arduino nano(アルドゥイーノ ...
-
マイコンからプログラムを読み...
-
2値化した画像の黒い部分のピク...
-
世界一美しいソースコード
-
COBOLのS9タイプからXタイプへ...
-
三次元のグラフを書きたいので...
-
c言語のサイコロを100回振って...
-
C言語primeについて
-
無限ループ中にある任意のキー...
-
初級者の質問――time_tについて
-
openGLで物体を半透明にして表...
-
Excel VBA じゃんけん
-
XPathの関数「text()="value"」...
-
どうやってパソコンなどの凄い...
-
プログラミングの問題と解答例...
-
processingで雪が積もるような...
-
一次元IFFTとFFTにおけ...
おすすめ情報