当前位置:首页 » 编程语言 » c语言解三元一次方程

c语言解三元一次方程

发布时间: 2022-08-28 05:03:30

Ⅰ 三元一次方程组 公式 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

热点内容
诈骗的脚本 发布:2025-01-16 23:51:27 浏览:314
电脑配置有点低怎么玩和平精英 发布:2025-01-16 23:46:14 浏览:818
ipfs分布式服务器是什么币种 发布:2025-01-16 23:32:29 浏览:991
android动态icon 发布:2025-01-16 23:03:12 浏览:605
优酷电脑缓存在哪 发布:2025-01-16 22:58:29 浏览:298
进口途锐哪个配置好 发布:2025-01-16 22:35:24 浏览:962
骨干路由器怎么配置 发布:2025-01-16 22:24:39 浏览:244
途安2021款买哪个配置 发布:2025-01-16 22:21:01 浏览:329
图片的压缩原理 发布:2025-01-16 22:17:15 浏览:493
云服务器本地电脑 发布:2025-01-16 22:17:04 浏览:961