首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

解线形方程组,100分

2012-02-26 
解线形方程组,100分求助长话短说,我在用高斯消元法解齐次线性方程组的函数时(注意,是齐次的),遇到了一个问

解线形方程组,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给你.
[解决办法]
已经发出,请注意接收

热点排行