前のページを参考に、
4元連立方程式
a11・X1 + a12・X2 + a13・X3 + a14・X4 = a15
a21・X1 + a22・X2 + a23・X3 + a24・X4 = a25
a31・X1 + a32・X2 + a33・X3 + a34・X4 = a35
a41・X1 + a42・X2 + a43・X3 + a44・X4 = a45
を解くプログラムを完成させなさい
#include
#include /* 絶対値 fabs( )を使うとき必要 */
#include /* 強制終了 exit(1) を使うとき必要 */
void main(){
double a[ ][ ], piv, del; /* 使える配列は0番からここに書いた数の一つ前までなので注意 */
int k,i,j;
double EPS=1.0e-6; /* とても小さい数という意味 */
/*--- 連立方程式の係数a11, a12,...の入力 ---*/
for(k= ; k<= ; k++){
for(j= ; j<= ; j++){
scanf("%lf", &a[k][j] );
}
}
/*--- ガウス ジョルダン法(掃きだし法)で連立方程式を解く ---*/
for (i= ; i<= ; i++){
piv = a[ ][ ];
if( fabs(piv) < EPS ) exit(1); /* piv があまり小さい時中止、0での割り算を避ける */
for(j= ; j<= ; j++){
a[ ][ ]= a[ ][ ]/piv;
}
for(k= ; k<= ; k++){
if( k!= ){
del = a[ ][ ];
for( j= ; j<= ; j++){
a[ ][ ] = a[ ][ ] - del * a[ ][ ];
}
}
}
}
printf("answer:\n");
for (i=1; i<= ; i++){
printf("X%d = %f\n", i, a[i][ ]);
}
}
将来的には、N元連立方程式に対応できるようにしておくと便利だよね
そのとき、N は #define N 5 とかにするといいよ
別解いろいろあります