• 締切済み

fortran gauss消去法のhilbelt行列について

今fortran90をやっています。で、ついこないだhilbelt行列をgauss消去法で解いたのですが、どうやっても4元までのhilbelt行列じゃないと答えが狂ってきます。どうしてでしょうか

みんなの回答

  • bob
  • ベストアンサー率50% (52/103)
回答No.1

これだけの情報量ではなんとも言いがたいのですが、とりあえず5次以上の対角行列とか簡単な問題では正解が得られているんですよね? Hilbert行列は定義から分かるように次数が上がる程対角成分が小さくなるので直接法でそのまま解くと誤差がたまりやすくなります。しかし、5次で解けなくなる程かと言われると、やってみないと分からないといった感じです... その辺りを考慮して演算の順番を誤差がたまりにくいように考慮するとか、なんらかの前処理を加えてみるなどの工夫をしてみてはどうでしょう? どうしても駄目だったら分解法なり反復法なりを試してみるしかないですね。

yusuke641
質問者

お礼

ありがとうございます。かなり理解しました。前処理を施して、もう一度プログラミングしてみます。

関連するQ&A

  • 待ち行列のプログラム(Fortran)

    Fortranで待ち行列(レジ待ち)のプログラムを作りたいのですが、途中で行き詰まってしまい、うまくできません!  待ち行列についてまだよく理解できてないのだと思います。指数乱数を発生させるプログラムだけだったらできるのですが、それをヒストグラムで示して、待ち行列がどのように変化するのか観察するプログラムができないのです。  待ち行列のプログラムについて詳しく載っているHPなどがあれば教えてください!!(本でもOKです)

  • fortran 掃き出し法で逆行列

    大学の授業でfortranを使って掃き出し法による3×3の逆行列を求める問題がでましたが求め方がわかりません。 どなたか教えてください! ちなみに行列は 1 2 1 2 1 -2 3 5 1 です。

  • C言語とfortranでのデータの受け渡しについて

    はじめましてc_f_gaussと申します。 現在fortranで動的に配列を得るためにC言語を使用し 配列を確保しそのアドレスをfortranで定義してある 配列のアドレスと交換したいのですがどのようにしたら よいでしょうか? 今の段階ではC言語側でアドレスを交換してもfortran 側に戻ると元のアドレスに戻ってしまいます。 fortranとC言語でデータ受け渡すには何か必要な手続き があるのでしょうか?

  • fortran

    fortranでn次正方行列の対角要素の和を求める関数副プログラムを作ろうと思います。 fortran初心者で、何から始めていいのかさっぱりワカリマセン。 ヒント・アドバイスがあればよろしくお願いいたします。

  • 逆行列求めたい

    今逆行列計算を行いたいと思い、LAPACK(Fortran)でがんばっておりますが、簡単な行列だとうまくいきますが、状態の悪い行列ではうまくいかないみたいです。計算上このような行列を計算しなければならなく困ってます。 ZGETRI,ZGETRFをつかってますが,いろいろと調べるとZLANGE,ZGECONを使っているとも見つけましたが、使い方がいまいちわかりません。 どなたかご教授いただけないでしょうか?

  • FORTRANについて

    今、大学の研究室でFORTRANの勉強をしています。そこで、院生から問題を出されました。それは、 テキストファイルから数字を読み込み、それらをFORTRANの中で計算し、その答えをまたテキストファイルに出力する、というプログラムです。 計算するところまではできたのですが、どうしてもテキストファイルに出力するプログラムがわかりません。 出力の仕方だけでも教えてください。教科書にもなく、図書館でも古い時代のものばかりで。しかも、僕は学校の関係でFORTRANを全く知りません。

  • FORTRAN

    初めまして。 今大学でFORTRANについて議論が交わされてるのですが FORTRANについて知ってるいる方がいたら是非教えてください。 今のところ求めている情報としては 1.FORTRANの強み 2.FORTRANの弱み 3.FORTRANのこれから 4.FORTRANが抱えている問題 URLなどでも結構ですので是非情報をお持ちでしたら教えてください。

  • 行列の消去法のコツなど教えてください。

    只今、学校にて行列を習っているわけですが、最近行列を使った消去法を習い始めました。 たとえば 3  1 -7  0 4 -1 -1  5 1 -1  2  2 このような行列があったとします。 習った方法は、 (1)一つの行に0でない数をかける。 (2)一つの行にある数をかけたものを他の行に加える。 (3)二つの行を交換する。 1  0  0  3 0  1  0  5 0  0  1  2 このような式に変形してx=3,y=5,z=2みたいな感じにするということでしたが、 今回教えていただきたいことは、 →1度に前述の3つの式を何回も使っていいのか。 →うまく変形するコツ。 の二つです。 やり方自体はなんとなくわかるのですが、単位行列に持っていくまでの手順がイマイチ難しくわからないので、よろしければご教授願います。 2月頭辺りからテストなのでズバリを突いて欲しいと思います。 よろしくお願いします。

  • FORTRANについての質問です。

    最近課題でFORTRANをやっているのです。 サブルーチンのMINVS/D/Q/C/Bというのを使って3×3の行列の逆行列を出力するプログラミングを作っているのですが、うまくできません。 サブルーチンを使うのはほとんどはじめてなのでどう使えばいいのかさえ良くわかっていません。 なにかアドバイスがありましたらお願いします。

  • ガウスの消去法

    はじめまして。 連立1次方程式を消去法で解くとき、 係数行列を上三角行列に変形できればどのような やり方でもよいのでしょうか?? 例えば、 x-2y+2z=2   (1) 4x-y-z=5    (2) 3x+y-7z=0   (3) これらを消去法で求めるとき(1)に-3、-4をかけて足し合わせて行けば楽なのでしょうが そうでなく、(2)、(3)にそれぞれ-1/4、-1/3をかけて足すという方法でも よいのでしょうか?? 答えは一致すると思うのですが・・・。 初歩的すぎる質問ですみませんm(__)m