Dev C ++中的高斯消元法麻烦

时间:2016-04-14 03:34:48

标签: c++ numerical-methods

需要一些有关此代码的帮助。我正在尝试编程高斯消除;编译时代码没有问题,但是当我执行时,程序总是向我显示:“解决方案是向量0”。我有些错误吗?非常感谢。

以下是代码:

void Elim_Gaussiana()
{
  int n,i,j,k;
  double A[20][20],B[20][20],x[20][20],aik,s = 0.0;

  //Elimination (triangularization process)

  for(k = 1;k <= n-1;k++)
  {
    for(i = k+1;i <= n;i++)
    {
      aik = A[i][k]/A[k][k];
      for(j = k;j <= n+1;j++)
        B[i][j] = A[i][j] - A[k][j]*aik;
    }
  }

  //Back-substitution

  x[n][1] = B[n][n+1]/B[n][n];
  if(B[n][n] == 0)
    cout<<"There's no solution"<<endl;
  else
  {
    for(i = n-1;i >= 1;i--)
    {
      for(j = i+1;j <= n;j++)
        s = B[i][j]*x[j][1];
      x[i][1] = (B[i][n+1] - s)/B[i][i];
    }
  }
  cout<<"Solution vector:"<<endl;
  cout<<endl;
  for(j=1; j<=n; j++)
   {
    cout<<"x["<<j<<"]"<<" = "<<x[j];
   }
  cout<<endl;
}

0 个答案:

没有答案