2 차원 배열로 재생할 간단한 코드를 작성했습니다. 코드의 목적은 행렬 방법을 사용하여 두 선형 연립 방정식을 푸는 것입니다 (정사각형 행렬의 계수 표현, 각각의 방정식의 출력을 역수로 곱하여 두 변수의 결과를 찾음). 코드가 컴파일 될 때 아무런 경고도 없으므로 문제가 무엇인지 모릅니다.프로그램에서 잘못된 값을 반환합니다. (C++)
#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 배 + 2Y, X = -1와 y = 2 그것을 반환 -0.5있는 값을 반환해야 = 1, 및 0.1875. 각 단계에서 모든 값을 출력하기 위해 코드에 행을 삽입했습니다. 그리고 determinant 함수가 resultVector의 값을 변경한다는 결론에 도달했습니다. 그러나 왜 어떤 도움이 될지 모르겠습니다. 대단히 감사하겠습니다.
(C/C++ 배열 색인은 0이 아닌 1부터 시작한다.) 그래서'double [2]'는'a [0]'이고'a [1] '___ **에는 [2] **가 없습니다. –
"* 각 단계의 모든 값을 출력하기 위해 코드에 행을 삽입했습니다 *"- 디버거를 사용하는 방법을 배우는 것이 좋습니다. 그러면 많은 노력을 줄일 수 있습니다. – JBentley