プロが教えるわが家の防犯対策術!

連立方程式を解く方法はわかったのですが、
なぜこのようにプログラムが書けたのか理由が知りたく実際のプログラムに値を入れて計算したのですがどうもうまくいきません。
例えば、k=0の時、i=0となります。d = a[i][k] / a[k][k]よりjは1となり、 a[i][j] -= a[k][j] * dは a[i][j] -= a[0][1] * 1より、 a[i][j]は a[0][1]となるため-2と、、、何を行なっているのか悩んでしまい全く理解ができません。
以下は全体の計算部分です。
どうか実際に値をプログラムに代入して、変数の値が導かれるまでの過程を教えて頂けないでしょうか?
どうかよろしくお願いします。

// 前進消去
for (k = 0; k < N -1; k++) {
for (i = k + 1; i < N; i++) {
d = a[i][k] / a[k][k];
for (j = k + 1; j <= N; j++)
a[i][j] -= a[k][j] * d;
}
}

全体のプログラムはこちらに書いてあります。
https://www.mk-mode.com/octopress/2013/09/24/cpp …

A 回答 (2件)

>連立方程式を解く方法はわかったのですが



わかれば追えるはずですが、じっくり追ってみては?

ヒント
①既に消去で0になったところはずっと0のままなので、
計算を省略している。
②消去でOになるところは後で使わないし、
0になるに決まっているので
計算も0を代入することもしていない。

なので、行列ダンプしてるだけではわからないでしょう。
処理をゆっくり追って端折りを理解し、論理的に
何をしてるかを頭の中に復元しないと駄目です。
    • good
    • 0

その「連立方程式を解く方法」に従って実際に計算してみればいいのでは?

    • good
    • 6

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!