使用高斯消元法在C中将2d矩阵引入行梯形形式的问题

时间:2017-10-22 04:03:47

标签: c matrix

我试图使用C将矩阵带入行梯形式。我遇到的问题是偶尔,我的代码将允许比率为0作为分母。代码段如下。



double **identityMatrix = allocateMatrix(size, size);
double **modifiedMatrix = allocateMatrix(size,size);
identityMatrix = createIdentityMatrix(size);
modifiedMatrix = matrix;
double ratio = 0;
for(int curCol = 0; curCol < size; curCol++) //Bring to row echelon form
{
  for(int curRow = curCol +1; curRow < size; curRow++)
  {
    if(modifiedMatrix[curRow][curCol] != 0)
    {
     int tmp = curRow - 1;
      while(modifiedMatrix[tmp][curCol] == 0)
      {
         tmp--;
      }
      ratio = modifiedMatrix[curRow][curCol]/modifiedMatrix[tmp][curCol];
      modifiedMatrix = subtractRow(modifiedMatrix,curRow, tmp, size, ratio);
      identityMatrix = subtractRow(identityMatrix,curRow, tmp, size, ratio);
   }
  }
}
&#13;
&#13;
&#13;

subtractRow肯定是正确实​​现的,也是allocateMatrix。矩阵始终保证是可逆的和正方形的。矩阵作为参数传入。问题显然是我的0检查,但我不确定它有什么问题。我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:-2)

我最近一直在研究矩阵,将矩阵转换为行梯形的算法非常有趣。

您可以查看我的代码here

快乐的编码。