我编写了一个简单的代码来处理二维数组,代码的目的是使用矩阵方法求解两个线性联立方程(表示方阵中的系数,计算逆,将逆乘以输出的每个方程找到两个变量的结果)。代码编译时没有警告,所以我不知道问题可能是什么。
#include <iostream>
using namespace std;
double determinant(double parameterMatrix[2][2])
{
return parameterMatrix[1][1] * parameterMatrix[2][2] - parameterMatrix[1][2] * parameterMatrix[2][1];
}
void invertMatrix (double parameterMatrix[2][2], double inverseMatrix[2][2])
{
double parameterDeterminant = determinant(parameterMatrix);
inverseMatrix[1][1] = parameterMatrix[2][2] / parameterDeterminant;
inverseMatrix[1][2] = - parameterMatrix[1][2] / parameterDeterminant;
inverseMatrix[2][1] = - parameterMatrix[2][1] / parameterDeterminant;
inverseMatrix[2][2] = parameterMatrix[1][1] / parameterDeterminant;
}
int main()
{
double resultVector[2];
double coefficientMatrix[2][2];
cout << "Enter equations of lines, which are of the form ax+by=c" << endl;
cout << "a = "; cin >> coefficientMatrix[1][1];
cout << "b = "; cin >> coefficientMatrix[1][2];
cout << "c = "; cin >> resultVector[1];
cout << "a = "; cin >> coefficientMatrix[2][1];
cout << "b = "; cin >> coefficientMatrix[2][2];
cout << "c = "; cin >> resultVector[2]; cout << endl << endl;
double inverseCoefficientMatrix[2][2];
invertMatrix(coefficientMatrix, inverseCoefficientMatrix);
double x = inverseCoefficientMatrix[1][1] * resultVector[1] + inverseCoefficientMatrix[1][2] * resultVector[2];
double y = inverseCoefficientMatrix[2][1] * resultVector[1] + inverseCoefficientMatrix[2][1] * resultVector[2];
cout << "The lines intersect at the point (" << x << ", " << y << ")" << endl;
return 0;
}
如果你用一个简单的例子来试试,例如,x + 2y = 3 和 3x + 2y = 1,它应该返回 x = -1 和 y = 2,它返回的值是 -0.5 和 0.1875。我一直在代码中插入行以打印出每个阶段的所有值,我得出的结论是行列式函数正在改变 resultVector 的值,但我不知道为什么,所以任何帮助都会不胜感激。