gauss消元法求解线性方程组(举例子)

二维数组变成上三角矩阵,从后面求xn-1一直求到x0即可

简单模拟

注意事项:

(1)注意分母不为0的情况

(2)化成上三角过程中,如果已经化为0的就不用再进行运算了,continue

(3)最好一步求解最后结果,避免提前约分

以以下线性方程组为例:

x1+x2-4*x4=1

-x1+x2+x3+3*x4=-2

x1+3*x2+5*x3-4*x4=-4

x2+2*x3-x4=-2

 

program:

#include
#include
#include
using namespace std;
double a[4][5];
double x[4];
int n=4;
int main()
{
 
a[0][0]=1,a[0][1]=1,a[0][2]=0,a[0][3]=4,a[0][4]=1;
a[1][0]=-1,a[1][1]=1,a[1][2]=1,a[1][3]=3,a[1][4]=-2;
a[2][0]=1,a[2][1]=3,a[2][2]=5,a[2][3]=-4,a[2][4]=-4;
a[3][0]=0,a[3][1]=1,a[3][2]=2,a[3][3]=-1,a[3][4]=-2;
double tmp;
for(int i=1;i=0;i--)      //(从最后逆推得x0~xn-1的结果)
{
   if(fabs(a[i][i])<=0.0001)//如果xi前面的系数为0,那么这个解-_-为0?貌似不可能 
      {
        x[i]=0;
        continue;                      
      }
   tmp=a[i][n];
   for(int j=n-1;j>=i+1;j--)//因为是求xi,所以减运算就是进行到i+1项 
   {
       tmp-=a[i][j]*x[j];
          
   } 
    
   x[i]=tmp/a[i][i]; 
         
}
cout<<"最后的解如下:"<



 

 

你可能感兴趣的:(软卓笔记+IT动向)