三元一次方程组 公式 c语言

Python012

三元一次方程组 公式 c语言,第1张

不知你那公式怎么来的,建议采用线性代数的克莱姆方法来解:

为方便和完善期间,增加一个变量H,把x=,y=,z=那三行和后面那一行

替换为:

H=a*(B*g-C*f)-A*(b*g-c*f)+e*(b*C-c*B)

if(H==0) printf("次方程组无解!")

else

{x=(d*(B*g-C*f)-D*(b*g-c*f)+h*(b*C-c*B))/H

y=(d*(A*g-C*e)-D*(a*g-c*e)+h*(a*C-c*A))/H

z=(d*(A*f-B*e)-D*(a*f-b*e)+h*(a*B-b*A))/H

printf("%lf\n%lf\n%lf",x,y,z)}

试验一下,不行再问。其实你的变量设置不大好,为了尽量保持原貌,未做改动。

//用克莱姆法则

float d=a[0,0]*a[1,1]*a[2,2]+a[0,1]*a[1,2]*a[2,0]+a[0,2]*a[1,0]*a[2,1]-a[0,0]*a[1,2]*a[2,1]-a[0,1]*a[1,0]*a[2,2]-a[0,2]*a[1,1]*a[2,0]

if(d==0)printf("无解\n")

else{

float p=a[0,3]*a[1,1]*a[2,2]+a[0,1]*a[1,2]*a[2,3]+a[0,2]*a[1,3]*a[2,1]-a[0,3]*a[1,2]*a[2,1]-a[0,1]*a[1,3]*a[2,2]-a[0,2]*a[1,1]*a[2,3]

float q=a[0,0]*a[1,3]*a[2,2]+a[0,3]*a[1,2]*a[2,0]+a[0,2]*a[1,0]*a[2,3]-a[0,0]*a[1,2]*a[2,3]-a[0,3]*a[1,0]*a[2,2]-a[0,2]*a[1,3]*a[2,0]

float r=a[0,0]*a[1,1]*a[2,3]+a[0,1]*a[1,3]*a[2,0]+a[0,3]*a[1,0]*a[2,1]-a[0,0]*a[1,3]*a[2,1]-a[0,1]*a[1,0]*a[2,3]-a[0,3]*a[1,1]*a[2,0]

printf("x1=%f\n",p/d)

printf("x2=%f\n",q/d)

printf("x3=%f\n",r/d)

}

}