‘壹’ 怎么解三元一次方程
三一次方程是指含有三个改猜渗未知数和一次方程的方程,通常可以表示为:
ax + by + cz = d
ex + fy + gz = h
ix + jy + kz = l
其中,a、b、c、d、e、f、g、h、i、j、k、l都是已知数,x、y、z是未知数。
(1)将方程组中的某个未知数消去,得到一个只含有两个未知数的方程组。
(2)将得到的方程组中的另一个未知数消去,得到一个只含有一个未知数的方程。
(3)解出这个一元一次方程,得到未知数的值。
(4)将求出的未知数的值代入原方程组中,求出兆燃另外两个未知数的值。
‘贰’ 三元一次方程组怎么解 详细过程
三元一次方程组是指由三个未知数和三个方程组成的方程组,其一般形式为:
a1x + b1y + c1z = d1
a2x + b2y + c2z = d2
a3x + b3y + c3z = d3
其中,a1、a2、a3、b1、b2、b3、c1、c2、c3、d1、d2、d3均为已知数。
解三元一次方程组的方法有很多种,下面介绍其中两种常用的方法。
方法一:高斯消元法
1. 将方程组写成增广矩阵的形式:
[ a1 b1 c1 | d1 ]
[ a2 b2 c2 | d2 ]
[ a3 b3 c3 | d3 ]
2. 通过初等行变换将增广矩阵化为行阶梯形矩阵:
[ a1 b1 c1 | d1 ]
[ 0 b2' c2' | d2' ]
[ 0 0 c3'' | d3'' ]
其中,b2'和c2'是经过初等行变换后得到的新系数,d2'和d3''也是经过初等行变换后得到的新常数。
3. 从最后一行开始,依次求解每个未知数的值:
z = d3'' / c3''
y = (d2' - c2'z) / b2'
x = (d1 - b1y - c1z) / a1
4. 将求得的未知数代入原方脊察销程组,检验解的正确性。
‘叁’ 用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[],int稿灶n)
{
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"
intmain()
{
int辩答汪a,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=%d携仔z=%d ",x,y,z);
}
if(e==0)
printf("方程无举汪解 ");
}
‘伍’ 已知一个三元一次方程,且方程两边都是整数,请写出求根的程序。
解答过程如下:7(x-2)=2x+3;解:7x-7×2=2x+3(先把7×(x-2)用乘法分配率);7x-14=2x+3(算出7×2);7x-14+14=2x+3+14(左右两边同时加14);7x=2x+3+14(左边只剩7x);-2x=3+14(先把7x和2x分别看做两个整体);5X=17;X=17/5
扩展内容:
使方程左右两边相等的未知数的值,叫核尘棚做方程的解。求方程的解的过程叫做解方程。必须含有未知数等式的等式才叫方程。等式不一定是方程,方程一定是改则等式。
相关概念
1.含有未知数的等式叫方程,也可以说是含有未知兄饥数的等式是方程。
2.使等式成立的未知数的值,称为方程的解,或方程的根。
3.解方程就是求出方程中所有未知数的值的过程。
4.方程一定是等式,等式不一定是方程。不含未知数的等式不是方程。
5.验证:一般解方程之后,需要进行验证。验证就是将解得的未知数的值代入原方程,看看方程两边是否相等。如果相等,那么所求得的值就是方程的解。
6.注意事项:写“解”字,等号对齐,检验。
7.方程依靠等式各部分的关系,和加减乘除各部分的关系(加数+加数=和,和-其中一个加数=另一个加数,差+减数=被减数,被减数-减数=差,被减数-差=减数,因数×因数=积,积÷一个因数=另一个因数,被除数÷除数=商,被除数÷商=除数,商×除数=被除数)
‘陆’ 解三元一次方程的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
‘柒’ 三元一次方程组求解软件
可以亏厅用Matlab软件,专业数学问题必备,对于数学建模问题也常用此软件解决
例如:求解
x+y+z=1
x+2y+z=2
z+y-z=0
使用MATLAB求解方程组的解,输入命令:
s=solve('x+y+z=1','x+2*y+z=2'销卖隐,'x+y-z=0'配吵,'x,y,z');
result=[s.x,s.y,s.z]
‘捌’ c语言程序设计 三元一次方程组求解
不知道你知不知道行列式
算法:
定义运算|a b c|
|d e f|=aei+bfg+cdh-afh-bdi-ceg
|g h i|
三元一次方程升穗组
ax+by+cz=d
ex+fy+gz=h
ix+jy+kz=l
|a b c|
令M=|e f g|
|i j k|
|d b c|
M1=|h f g|
|l j k|
|a d c|
M2=|e h g|
|i l k|
|a b d|
M3=|e f h|
|i j l|
则x=M1/M
y=M2/M
z=M3/M
程序:
#include<stdio.h>
int fx(int a,int b,int c,
int d,int e,int f,
int g,int h,int i);
void main()
{int a,b,c,d,e,f,g,h,i,j,k,l,x,y,z,m;
printf("a,b,c,d\n");
scanf("%d,%d,%d,%d"吵销卜,&a,&b,&c,&d);
printf("e,f,g,h\n");
scanf("%d,%d,%d,%d",&e,&f,&g,&h);
printf("i,j,k,l\n");
scanf("斗搏%d,%d,%d,%d",&i,&j,&k,&l);
m=fx(a,b,c,e,f,g,i,j,k);
if(m==0)
{printf("x=0,y=0,z=0\n");
return ;
}
x=fx(d,b,c,h,f,g,l,j,k)/(float)m;
y=fx(a,d,c,e,h,g,i,l,k)/(float)m;
z=fx(a,b,d,e,f,h,i,j,l)/(float)m;
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
int fx(int a,int b,int c,
int d,int e,int f,
int g,int h,int i)
{int result;
result=a*e*i+b*f*g+c*d*h-a*f*h-b*d*i-c*e*g;
return result;
}