|
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, j, k, n;
double **a, *b;
printf( "元の数=" );
scanf( "%d", &n);
/* メモリ確保 */
a = (double**)malloc(n*sizeof(double*));
b = (double*)malloc(n*sizeof(double));
for( i = 0; i < n; i++ ){
a[i] = (double*)malloc(n*sizeof(double));
}
/* 連立方程式の入力 */
for( i = 0; i < n; i++ ){
for( j = 0; j < n; j++ ){
scanf( "%lf", &a[i][j] );
}
}
for( i = 0; i < n; i++ ){
scanf( "%lf", &b[i] );
}
/* 前進消去 */
for( i = 0; i < n; i++ ){
for( j = i+1; j < n; j++ ){
a[j][i] /= a[i][i];
for( k = i+1; k < n; k++ ){
a[j][k] -= a[i][k] * a[j][i];
}
b[j] -= b[i] * a[j][i];
}
}
/* 後退代入 */
for( i = n-1; i >= 0; i-- ){
for( j = i+1; j<n; j++ ){
b[i] -= a[i][j] * b[j];
}
b[i] /= a[i][i];
}
/* 出力 */
for( i = 0; i < n; i++ ){
printf( "解X%2d=%10f\n", i+1, b[i] );
}
}
ここまではできたのですが、計算時間が計れませぬ。どうかお願いします。m(__)m土下座してます。
|