1
ガウス・シーデル法を使用して、25×25行列を解いて、2D熱伝達化学工学の問題を解決しようとしています。VBAのGauss座
しかし、これはガウスザイデル 行列1のためのdo-while文である第二の繰り返しに
Do While error > 0.1
temps0 = temps1(UBound(matrix1, 1), 1) ' Old temperature for error calculation
'Conducts the gauss algorithm for each row
For i = 1 To UBound(matrix1, 1)
temps1(i, 1) = matrix1(i, UBound(matrix1, 2))
For j = 1 To (UBound(matrix1, 2) - 1)
If j <> i Then
temps1(i, 1) = temps1(i, 1) - (matrix1(i, j) * temps1(j, 1))
ElseIf j = i Then
divider = matrix1(i, j)
End If
Next j
temps1(i, 1) = temps1(i, 1)/divider
Next i
error = Abs((temps1(UBound(matrix1, 1), 1) - temps0)/temps1(UBound(matrix1, 1), 1))
iteration = iteration + 1
Loop
を行くdoesntの以前の機能により
を生成COEFF行列は本当に任意の助けに感謝しています。あなたは「それは第二の繰り返しにならない」と言うときの変化による誤差の値を解決し TY
、あなたは 'i'ループの2回目の繰り返しを参照する、またはされています'j'ループの2回目の反復? 2番目の反復に行くのではなく、それがクラッシュするかどうか、あるいは 'matrix1'は' 1から1,1、To 2'などの大きさだけと考えていますか? – YowE3K
私はそれがtemp1(1-D配列)を更新しないことを意味します。 – user133174
F8キーを使用してコードをシングルステップ実行し、プログラムフローが正しいかどうかを確認します。 ....ループが多すぎる場合は、ブレークポイントを挿入し、F5キーを押して実行を継続します。ブレークポイントで停止します – jsotola