一个简单的C语言程序问题?

来源:百度知道 编辑:UC知道 时间:2024/06/19 15:20:38
请问求一个六元一次方程组用C语言程序怎么实现:如
a-b+c-d+e+d=40
a+b+c+d+e+f=24
4a+2d+f=30
a+b+c-d-e+f=24
4c-2e+f=32
4a-4b+4c+2d-2e+f=25
不是啊,我问的是用C语言怎么实现,不是用矩阵什么的,还有下面的方法我都试过了都不行啊,有哪位高手指点一下,急啊!
不行啊,兄弟们,这些方法我都试过了,都不行啊,拜托了,各位在提供一些方法好吧!

楼上所有的解法纯属瞎扯……
gis19831203说的完全正确!!

要用到矩阵,有些著名的算法如高斯消元法就是解多元线性方程组的。

以下是高斯消元法的c语言实现,它可以解4行5列的矩阵,如果解楼主的方程组,需要把宏常量“L”,“M”和“N”分别改为5,7,6

注:所解矩阵为线性方程组的系数,解楼主的方程组时,该矩阵为:
1 -1 1 -1 1 1 40
1 1 1 1 1 1 24
4 0 0 2 0 1 30
1 1 1 -1 -1 1 24
0 0 4 0 -2 1 32
4 -4 4 2 -2 1 25
********************************
#include "Stdio.h"
#include "Conio.h"
/*L是矩阵的行减1,从程序上看是最外层循环的次数
N 对应矩阵的行数,M对应矩阵的列数
可以通过改变L、N、M来控制矩的阶数 */
#define L 3
#define N 4
#define M 5
void gauss(double a[N][M],double x[N])
{int i,j,l,n,m,k=0;
double temp[N];
/*第一个do-while是将增广矩阵消成上三角形式*/
do{n=0;
for(l=k;l<L;l++)temp[n++]=a[l+1][k]/a[k][k];
for(m=0,i=k;i<N;i++,m++)
for(j=k;j<M;j++)a[i+1][j]-=temp[m]*a[k][j];
k++;
}while(k<N) ;
/*第二个do-while是将矩阵消成对角形式,并且重新给k赋值*/
k=L-1;
do{n=0;
for(l=k;l>=0;l--)temp[n++]=a[