• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010での連立方程式の計算)

VB2010での連立方程式の計算

このQ&Aのポイント
  • VB2010でガウスの消去法を使った連立方程式の計算を行いたいが、解が求まらない場合について質問
  • 質問者はVB初心者であり、未知数が8つの連立方程式を解くためにガウスの消去法を使いたい
  • 現在のプログラムでは、解が求まらずNAN(非数値)となる状況が発生しており、pに0が入ってしまっていることが原因と考えているが、回避する方法を知りたい

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

エラーの原因は行の入れ替えを最初の1回しかしていないからです。 行の入れ替えは、各行の計算ごとに行う必要があります。 For i = 0 To N - 1 Step 1   m = 0   pivot = i   ・・・・・   ・・・・・ Next For k = 0 To N - 1 Step 1   p = Myarray(k, k) '対格要素を保存   ・・・・・   ・・・・・ Next この部分を、 For k = 0 To N - 1 Step 1   m = 0   pivot = k   ・・・・・   ・・・・・   p = Myarray(k, k) '対格要素を保存   ・・・・・   ・・・・・ Next とすれば大丈夫でしょう。 初めのFor文のインデックスをiからkに変えているので注意してください。

jastaway0124
質問者

補足

解答ありがとうございます。修正プログラムfor分の終わりのNEXTが元のプログラムの2つ目のfor分の終わりのNEXTの場所でよいでしょうか? 色々やってみましたが if pivot <> i thenの中の b(0,j) = MyArray(i,j) の所でインデックスが配列の境界外です、ってエラーが出てしまいますね。解答の意味を勘違いしてたら申し訳ないです><

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

>修正プログラムfor分の終わりのNEXTが元のプログラムの2つ目のfor分の終わりのNEXTの場所でよいでしょうか? それでいいです。要するに2つのFor文を1つにまとめただけです。 >色々やってみましたが if pivot <> i thenの中の >b(0,j) = MyArray(i,j) >の所でインデックスが配列の境界外です、ってエラーが出てしまいますね。 For文の変数iをkに変えたので、1つめのFor文の中のiをすべてkに変えてください。

jastaway0124
質問者

お礼

よく考えたらそうですよね。不注意失礼しました>< 無事に動きました。本当にありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A