c语言解三元一次方程
Ⅰ 三元一次方程组 公式 c语言
不知你那公式怎么来的,建议采用线性代数的克莱姆方法来解:
为方便和完善期间,增加一个变量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);}
试验一下,不行再问。其实你的变量设置不大好,为了尽量保持原貌,未做改动。
Ⅱ 用c语言实现高斯消去法,解三元一次方程组。求具体程序!!
#include<iostream>
#include<cmath>
usingnamespacestd;
#defineMAX50
voidinput(doublea[MAX][MAX+1],intn)
{
cout<<"输入原方程组的增广矩阵"<<endl;
for(inti=0;i<n;i++)
for(intj=0;j<n+1;j++)
cin>>a[i][j];
}
voidoutput(doublex[],intn)
{
cout<<"Gauss消去法得到的原方程组的解为"<<endl;
for(intk=0;k<n;k++)
cout<<x[k]<<"";
}
intmain()
{
doublea[MAX][MAX+1],x[MAX],sum,max,t;
intn,i,j,k,max_i;
cout<<"输入原方程组的阶"<<endl;cin>>n;
input(a,n);
for(k=0;k<n-1;k++)//选主元素
{max=a[k][k];
max_i=k;
for(i=k+1;i<n;i++)
if(fabs(a[i][k])>fabs(max))
{
max=a[i][k];
max_i=i;
}
if(max==0)
break;
if(max_i!=k)//交换两行
for(j=k;j<n+1;j++)
{
t=a[k][j];
a[k][j]=a[max_i][j];
a[max_i][j]=t;
}
for(i=k+1;i<n;i++)
{
a[i][k]=a[i][k]/-a[k][k];
for(j=k+1;j<n+1;j++)
a[i][j]=a[i][j]+a[i][k]*a[k][j];
}//消元
}
if(max==0)cout<<"原方程组无解"<<endl;
else
{
for(k=n-1;k>=0;k--)
{
sum=0;
for(j=k+1;j<n;j++)
sum=sum+a[k][j]*x[j];
x[k]=(a[k][n]-sum)/a[k][k];
}//回代
output(x,n);
cout<<endl;
}
return0;
}
Ⅲ c语言求三元一次方程的根
#include <stdio.h>
#include <math.h>int main()
{
double a, b, c;
double rst1, rst2;
double det;
printf("please input the arguments of the equation:");
scanf("%lf %lf %lf", &a, &b, &c);
det = b * b - (4 * a * c);
rst1 = ((-1) * b + sqrt(det)) / (2 * a);
rst2 = ((-1) * b - sqrt(det)) / (2 * a); printf("rst1 = %lf, rst2 = %lf\n", rst1, rst2);
return 0;
}
Ⅳ C语言解三元一次方程(源代码)
#include"stdio.h"
intmain()
{
inta,b,c,d,e=0;
intx,y,z;
printf("请输入a:");
scanf("%d",&a);
printf("请输入b:");
scanf("%d",&b);
printf("请输入c:");
scanf("%d",&c);
printf("请输入d:");
scanf("%d",&d);
for(x=-1000;x<=1000;x++)
for(y=-1000;y<=1000;y++)
for(z=-1000;z<1000;z++)
if(a*x+b*y+c*z==d)
{
e++;
if(e==2)
{
printf("ohmygod! ");
return0;
}
printf("x=%dy=%dz=%d ",x,y,z);
}
if(e==0)
printf("方程无解 ");
}
Ⅳ 解三元一次方程的c语言程序
#include <stdio.h>#define EPSINON 0.000001void main(){
float a[3][3],detA,detA1,detA2,detA3;float b[3],x,y,z;int i,j;printf("3元一次方程组的格式如下:\n");printf("a[0][0]x+a[0][1]y+a[0][2]z = b[0]\n");printf("a[1][0]x+a[1][1]y+a[1][2]z = b[1]\n");printf("a[2][0]x+a[2][1]y+a[2][2]z = b[2]\n");printf("请依次输入方程系数:\n");
for(i=0; i<3; i++){ for(j=0; j<3; j++) { printf("a[%d][%d]=", i, j); scanf("%f", &a[i][j]); }}printf("依次输入方式右边参数:\n");for(i=0; i<3; i++){ printf("b[%d]=",i); scanf("%f",&b[i]);}
detA = 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];
detA1 = b[0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*b[2]+ a[0][2]*b[1]*a[2][1]-b[0]*a[1][2]*a[2][1]- a[0][1]*b[1]*a[2][2]-a[0][2]*a[1][1]*b[2];
detA2 = a[0][0]*b[1]*a[2][2]+b[0]*a[1][2]*a[2][0]+ a[0][2]*a[1][0]*b[2]-a[0][0]*a[1][2]*b[2]- b[0]*a[1][0]*a[2][2]-a[0][2]*b[1]*a[2][0];
detA3 = a[0][0]*a[1][1]*b[2]+a[0][1]*b[1]*a[2][0]+ b[0]*a[1][0]*a[2][1]-a[0][0]*b[1]*a[2][1]- a[0][1]*a[1][0]*b[2]-b[0]*a[1][1]*a[2][0];
x = detA1/detA;y = detA2/detA;z = detA3/detA;if ((detA >= -EPSINON) && (detA <= EPSINON)){ printf("方程无唯一解!\n"); }else{ printf("方程组的根为:x=%f,y=%f,z=%f\n", x, y, z); }}
网上搜的用法是:3x-y+z=3 方程系数依次是输入3-11 方式右边参数是输入3
Ⅵ c语言解三元一次方程组!接着我的代码写!尽快~
//用克莱姆法则
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);
}
}
Ⅶ 用C语言怎样解三元一次方程组
不知道学过计算方法没有,其中有好多方法呢!
例如:高斯消去法,高斯列主元消去法,矩阵分解法以及解线性方程组的迭代法
不好意思,算法不好往上写,请自己上网搜这几种中的一种算法到底是怎样的吧,还可能搜到源程序加以参考呢.
例如:http://www2.gliet.e.cn/person/xan/krocpstudio/sy/sy2/2-3.htm