for (i = N - 1; i >= 0; i--) { a[i][N] /= a[i][i]; for (j = i + 1; j < N; j++) a[i][N] -= a[i][j] * a[j][N] / a[i][i]; }
のプログラムを以下のように書きました。
for (i = N - 1; i >= 0; i--) { d = a[i][N]/ a[i][i]; for (j = i + 1; j < N; j++) a[i][N] = d- a[i][j] * a[j][N] / a[i][i]; }
とすると全く異なる計算結果が出るとのことでいた。
しかし、私の頭が悪いため、なぜ代入がうまくいかないのか未だに理解できずにいます。
d = a[i][N]/ a[i][i]と置くにしてもdがa[i][N]/ a[i][i]なのでa[i][N] = d- a[i][j] * a[j][N] / a[i][i]に代入されて普通に計算されるのでは?と思ってしまいます。
d = a[i][N]/ a[i][i]と置いてしまうと、a[i][N]/ a[i][i]のa[i][N]に正しい値が代入されないため、d=a[i][N]と前に置くとしたら、そういうものだと覚えるしかないと考えています。
問題がどこにあるのか明確に理解できていないのかもしれません。
dに置き換えたことが問題というよりa[i][j]が問題なのか...。
今後は今回のような問題が起きないように素直にプログラムを書くしかありません。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。