#1
by dragon » 8年前
初心者です。三元一次連立方程式ax+by+cz=d,ex+fy+gz=h,jx+ky+mz=n の解であるx,y,zを求めるプログラミングを作っているのですが、実際にa〜nの値を入れて計算して出た値が間違って出て来ます。どこかに間違いがあると思うのですが自分にはよくわからないので、ご指摘をいただきたいです。
コード:
#include <stdio.h>
#include <math.h>
main()
{
/* 三元一次連立方程式の解を求めるプログラム*/
double a,b,c,d,e,f,g,h,j,k,m,n,x,y,z;
printf("input a,b,c,d,e,f,g,h,j,k,m,n:");
scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf ",&a,&b,&c,&d,&e,&f,&g,&h,&j,&k,&m,&n);
if((a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k)==0){
printf("no solutions\n");
}
else{
x=((d*f*m+b*g*n+c*h*k-c*f*n-b*h*m-d*g*k)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
y=((a*h*m+d*g*j+c*e*n-c*h*j-d*e*m-a*g*n)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
z=((a*f*n+b*h*j+d*e*k-d*f*j-b*e*n-a*h*k)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
printf("x=%lf y=%lf z=%lf\n",x,y,z);
}
};
[\code]
初心者です。三元一次連立方程式ax+by+cz=d,ex+fy+gz=h,jx+ky+mz=n の解であるx,y,zを求めるプログラミングを作っているのですが、実際にa〜nの値を入れて計算して出た値が間違って出て来ます。どこかに間違いがあると思うのですが自分にはよくわからないので、ご指摘をいただきたいです。
[code=c]
#include <stdio.h>
#include <math.h>
main()
{
/* 三元一次連立方程式の解を求めるプログラム*/
double a,b,c,d,e,f,g,h,j,k,m,n,x,y,z;
printf("input a,b,c,d,e,f,g,h,j,k,m,n:");
scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf ",&a,&b,&c,&d,&e,&f,&g,&h,&j,&k,&m,&n);
if((a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k)==0){
printf("no solutions\n");
}
else{
x=((d*f*m+b*g*n+c*h*k-c*f*n-b*h*m-d*g*k)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
y=((a*h*m+d*g*j+c*e*n-c*h*j-d*e*m-a*g*n)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
z=((a*f*n+b*h*j+d*e*k-d*f*j-b*e*n-a*h*k)/(a*f*m+b*g*j+c*e*k-c*f*j-b*e*m-a*g*k));
printf("x=%lf y=%lf z=%lf\n",x,y,z);
}
};
[\code]