#include <stdio.h>
#include <process.h>
double determ(double[3][3]);
void replace(double[3][3], double[3][3],double [3],int,int);
int main()
{
int n=3,i;
double a[3][3],aw[3][3],b[3],da,d[3],x[3];
FILE *pf;
pf=fopen("mat.dat","r");
if(pf==NULL){
printf("file open error\n");
exit(1);
}
for(i=0; i<n;++i) {
fscanf(pf,"%lf %lf %lf\n",&a[i][0],&a[i][1],&a[i][2]);
printf("%lf %lf %lf\n",a[i][0],a[i][1],a[i][2]);
}
for(i=0; i<n; ++i){
fscanf(pf,"%lf",&b[i]);
printf(" %lf\n",b[i]);
}
da=determ(a);
for(i=0; i<n; ++i){
replace(a,aw,b,n,i);
d[i]=determ(aw);
x[i]=d[i]/da;
}
for(i=0; i<n; ++i)
printf(" x%1d= %10.3lf\n",i,x[i]);
return 0;
}
void replace(double a[3][3], double aw[3][3],double b[3],int n, int ir)
{
int i,j;
for(i=0;i<n ;++i)
for(j=0; j<n;++j)
aw[i][j]=a[i][j];
for(i=0; i<n ;++i)
aw[i][ir]=b[i];
}
double determ(double a[3][3])
{
double sum=0.;
sum+=a[0][0]*a[1][1]*a[2][2]+a[0][2]*a[1][0]*a[2][1]+a[0][1]*a[1][2]*a[2][0];
sum-=(a[0][2]*a[1][1]*a[2][0]+a[0][0]*a[1][2]*a[2][1]+a[0][1]*a[1][0]*a[2][2]);
return sum;
}
--
※ 發信站: 批踢踢實業坊(ptt.twbbs.org)
◆ From: pc86.na.ntu.edu