c言語です。
c言語です。
実行結果
式
3 X1 + 2 X2 + 1 X3 = &g
2 X1 + 5 X2 + 2 X3 = &g
1 X1 + 4 X2 + 1 X3 = &g
解
X1 = 1
X2 = 2
X3 = 3
を
式
3 X1 + 2 X2 + 1 X3 = 10
2 X1 + 5 X2 + 2 X3 = 18
1 X1 + 4 X2 + 1 X3 = 12
解
X1 = 1
X2 = 2
X3 = 3
に直したいのですが&gの所をどのようにしたら10.18.12になりますか?
#include <stdio.h>
#include <float.h>
#define N 3
double A[N][N] = {{3,2,1},
{2,5,2},
{1,4,1}};
double b[N] = { 10, 18, 12 };
void Gauss_J( int, double*, double* );
void main(void)
{
int i;
printf( "%d式\n", N );
for( i = 0; i < N ; i++ )
{
printf( "%g X1 + %g X2 + %g X3 = &g \n",
A[i][0], A[i][1], A[i][2], b[i] );
}
printf("解\n");
Gauss_J(N, (double *)A, (double *)b );
printf("X1 = %g \n", b[0]);
printf("X2 = %g \n", b[1]);
printf("X3 = %g \n", b[2]);
}
void Gauss_J(int n, double *a, double *b)
{
int p, i, j,I ;
double pivot, c ;
for ( p = 0 ; p < n ; p++ )
{
pivot = a[ p*n + p ];
for ( i = p ; i < n ; i++ )
{
a[ p*n + i ] /= pivot;
}
b[ p ] /= pivot;
for ( I = 0 ; I < n ; I++)
{
if (I != p)
{
c = a[ I*n + p];
for ( j = p ; j < n; j++ )
{
a[ I*n + j] -= c * a[ p*n + j ];
}
b[ I ] -= c * b[ p ];
}
}
}
return ;
}
お礼
この累乗のプログラムがわからなかったので、質問させて頂きました。かなりたすかりました。どうもありがとうございます。