解线形方程组,100分求助
长话短说,
我在用高斯消元法解齐次线性方程组的函数时(注意,是齐次的),遇到了一个问题,首先我先假设一个非齐次线形方程组:
3x + 2y - 3z = 5
4x - 3y + 6z = 1
x - z = 3
把他列为矩阵:
3 2 -3 5
4 -3 6 1
1 0 -1 3
然后我调用高斯消元函数可以得到正确的答案:
1 0 0 1.3
0 1 0 -2
0 0 1 -1.7
但是如果方程是:
3x + 2y - 3z = 0
4x - 3y + 6z = 0
x - z = 0
那么,解出来的永远都是:
1 0 0 0
0 1 0 0
0 0 1 0
而后,不管x,y,z的系数是什么,只要等号右边的常数项都为0,那么他们永远都是:
1 0 0 0
0 1 0 0
0 0 1 0
这是怎么回事啊?
[解决办法]
楼主把代码贴出来看看吧
[解决办法]
bool SimMatrix()//matrix 的最简形式,可以用来求解多元一次方程组
{
int j = 0;
for(int i = 0 ; i < r ; i ++ )//
{
for(; j < c ; j ++) //while(j < c)
{
int k = i;
while( matrix[k][j] == 0 && k < r - 1) //如果k <r???(1)
k++;
if( matrix[k][j] != 0 )//k=1 j =0 i= 0
{
ChglMatrix(i,k);//交换第i行与第k行
MullMatrix(i,1 / matrix[i][j]);//第i行乘以1/matrix[i][j]
for(int t = 0;t < r;t ++)
{
if(t != i)
{
//第t行加上第i行乘以- matrix[t][j]
MuadMatrix(t,i,- matrix[t][j]);
}
}
j ++;
break;
}
}
}
return true;
}
[解决办法]
你可以参看一本叫 <计算机常用算法与程序C++实现> 的书,上面有所有的计算方法的例子.
也有你想要的解方程的程序段,网上有该程序的代码下载,我也可以发EMAIL给你.
[解决办法]
已经发出,请注意接收