我试图使用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;
subtractRow肯定是正确实现的,也是allocateMatrix。矩阵始终保证是可逆的和正方形的。矩阵作为参数传入。问题显然是我的0检查,但我不确定它有什么问题。我非常感谢任何帮助。