역행렬
배우기
10 컬렉션
역행렬

다차원 배열을 활용한 행렬 문제를 풀어보는 실습을 해봅니다.

사실 Go언어에서 배열보다는 동적 할당이 가능한 슬라이스가 많이 쓰인다고 했습니다. 하지만 const 용법을 사용한 상수를 꼭 선언해야하는 상황이 있는 것처럼, 배열을 사용해야하는 경우가 있습니다.

다차원 행렬을 선언하고 연산하는 프로그램은 선형대수에서 많이 쓰입니다. 많은 공식들이 있지만 중/고등학교 시절 기초로 배웠던 2x2 행렬의 역행렬을 연산하고 출력하는 예제를 실습해보겠습니다.


2x2 행렬은 [{a, b}, {c, d}]  형식으로 사용합니다. 1행 1열부터 2행 2열까지 순서대로 a, b, c, d로 표현합니다.

2x2 정방행렬의 역행렬은 a*d - b*c 가 0이 아닐때 존재합니다.  


이 실습 예제는 사용자가 따로 값을 입력하지 않고 초기화한 값으로 연산을 하지만 얼마든지 사용자에게 값을 입력받고 역행렬의 존재 여부와 역행렬을 출력하는 프로그램으로 발전시킬 수 있습니다.

실습 내용
  • 행렬 A는 2x2 정방 행렬로서 1행에 {7, 3}, 2행에 {5, 2} 원소로 이루어져 있습니다. 이를 배열로 초기화합니다.
  • 변수 'd'에 행렬A의 역행렬 판별식을 초기화합니다. (판별식 = a*d - b*c) 
  • 판별식(d)이 0이 아니면(역행렬이 존재할 때) 행렬 A를 역행렬로 만드는 연산을 수행합니다. 그리고 true와 연산 결과인 역행렬을 출력합니다.
  • 판별식(d)이 0이면(역행렬이 존재하지 않을 때) 아무 연산도 하지 않고 false만 출력합니다.
  • 역행렬을 구하는 공식은 다음과 같습니다.

출처 : 네이버 지식백과(https://terms.naver.com/entry.nhn?docId=3350376&cid=60210&categoryId=60210)


입력




출력


첫 번째 줄에는 역행렬 존재 여부인 true/false가 출력됩니다.

역행렬이 존재한다면 두 번째 줄과 세 번째 줄에는 역행렬의 첫 번째 행의 원소와 두 번째 행의 원소가 차례대로 출력됩니다. (각 원소는 띄어쓰기합니다.)

입/출력 예시
:
공백
:
줄 바꿈
:
예시 1
출력
true
-23
5-7
⋇ 입출력 형식을 잘 지켜주세요
질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.