- ベストアンサー
プログラミング問題について困っています - 助けてください
- プログラミングの問題が分からず、困っています。掃き出し法で解くプログラムを作成していますが、いくつかの箇所が分からないため、助けが必要です。
- 与えられた係数行列を掃き出し法を使って解くプログラムを作成していますが、ピボット係数の求め方やピボット行・列の掃き出し方が分からないため、プログラムが動作しません。
- 求められる実行結果の表示方法も分からず困っています。プログラムの(1)~(5)の箇所の書き方や計算結果の表示方法を教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
掃きだし法でやる場合 1番目の方程式は Xの係数を1するようにPivotを設定 2番目の方程式は 1番目の方程式で掃き出した結果のYの係数をPivotに設定 3番目の方程式は 1番目、2番目の方程式で掃き出した結果の Zの係数をPivotにする ということになります つまり (1)は a[0][0]、a[1][1]、a[2][2]がpivotに代入されます 2)は ピボット行の係数および右辺値を 1)で設定したpivotで除算します つまり i=0の場合なら a[0][0],a[0,1], a[0][2], a[0][3]を処理します 3)は掃き出しをどの行に対して行うかですから i と kとの比較です 4)は実際の掃き出しです i=0の場合 a[1][0],a[1][1],a[1][2],a[1][3] を a[0][0],a[0][1],a[0][2],a[0][3]とdelを使った演算です a[2][0],a[2][1],a[2][2],a[2][3] を a[0][0],a[0][1],a[0][2],a[0][3]とdelを使った演算です ヒント a[1][0],a[2][0]が 0になるように演算する 5)は結果の表示ですから 掃き出し法をちゃんと理解しているなら 配列のどこに結果が現れるのかは明らかになります 『掃き出し法』などで検索すれば情報はいくらでも取得できますよ http://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%81%AE%E6%B6%88%E5%8E%BB%E6%B3%95 ウィキペディアの『ガウスの消去法』を参照してみましょう ウィキでは 前進消去/後退消去と2段階にしていますが お示しの問題では 1度に前進/後退両方の消去をしています
その他の回答 (1)
- Interest
- ベストアンサー率31% (207/659)
まずは自分の頭で考えよう。それでわからなければ、「自分はこう思うが自信がない」という答えを出したうえで質問しよう。
補足
回答ありがとうございます。考えて、 (1)pivot=a[i][i]; (2)a[i][j]=a[i][j]/pivot; (3)(k!=i) (4)a[i][j]=a[i][j]-del*a[i][j]; (5)printf("x%d=%f\n",k+1,a[k][N]); でやってみたのですが、上手くいかないんです。実を言うと、期限が迫っていて本当に困っているんです。どうか助けて下さい。