Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

행렬이 반전 가능한지 확인하는 C++ 프로그램

<시간/>

행렬의 행렬식은 역행렬인지 여부를 찾는 데 사용할 수 있습니다. 행렬식은 행렬식이 0이 아니면 역행렬입니다. 따라서 행렬식이 0으로 나오면 행렬은 역전되지 않습니다. 예를 들어 -

주어진 행렬은 다음과 같습니다.4 2 12 1 19 3 2위 행렬의 행렬식은 다음과 같습니다. 3그래서 행렬은 역행렬입니다.

행렬이 역행렬인지 여부를 확인하는 프로그램은 다음과 같습니다.

예시

#include#include네임스페이스 사용 std;int determinant( int matrix[10][10], int n) { int det =0; int 부분행렬[10][10]; if (n ==2) return ((행렬[0][0] * 행렬[1][1]) - (행렬[1][0] * 행렬[0][1])); else { for (int x =0; x > n; cout <<"행렬의 요소를 입력하십시오:\n"; for (i =0; i > matrix[i][j]; cout<<"입력한 행렬은 다음과 같습니다."< 

출력

행렬의 크기를 입력하십시오:3행렬의 요소를 입력하십시오:1 2 32 1 21 1 4입력된 행렬은 다음과 같습니다:1 2 32 1 21 1 4행렬의 행렬식은 -7 행렬식이 0이 아니므로 역행렬입니다. 

위 프로그램에서 행렬의 크기와 요소는 main() 함수에서 제공됩니다. 그런 다음 함수 determinant()가 호출됩니다. d에 저장된 행렬의 행렬식을 반환합니다. 행렬식이 0이면 행렬은 역행렬이 아니며 행렬식이 0이 아니면 행렬이 역행렬입니다. 다음 코드 스니펫을 통해 이를 확인할 수 있습니다.

cout <<"행렬의 크기를 입력하십시오:\n";cin>> n;cout <<"행렬의 요소를 입력하십시오:\n";for (i =0; i > matrix[i][j];cout<<"입력된 행렬은 다음과 같습니다."< 

함수 determinant()에서 행렬의 크기가 2이면 행렬식이 직접 계산되어 값이 반환됩니다. 이것은 다음과 같이 표시됩니다.

if (n ==2)return ((행렬[0][0] * 행렬[1][1]) - (행렬[1][0] * 행렬[0][1])); 

행렬의 크기가 2가 아니면 행렬식을 재귀적으로 계산합니다. 루프 변수 x, i 및 j와 함께 사용되는 3개의 중첩 for 루프가 있습니다. 이 루프는 행렬식을 계산하는 데 사용되며 함수 determinant()를 재귀적으로 호출하여 내부 행렬식을 계산한 다음 외부 값과 곱합니다. 다음 코드 스니펫에서 이를 확인할 수 있습니다.

for (int x =0; x