도전
a, b, c, d, e, f, g, h, i
제곱 행렬에 해당하는 입력으로 9 개의 숫자가 주어집니다 .
M=⎛⎝⎜adgbehcfi⎞⎠⎟
행렬의 역수 M−1 찾아 성분을 출력합니다.
역행렬
행렬 3의 3에 대한 역은 다음 방정식을 따릅니다.
MM−1=M−1M=I=⎛⎝⎜100010001⎞⎠⎟
다음과 같이 계산할 수 있습니다.
M−1=1det(M)CT
여기서 C 는 보조 인자의 행렬입니다.
C=⎛⎝⎜ei−fhch−bibf−cefg−diai−cgcd−afdh−egbg−ahae−bd⎞⎠⎟
그리고 의 전치 C :CTC
CT=⎛⎝⎜ei−fhfg−didh−egch−biai−cgbg−ahbf−cecd−afae−bd⎞⎠⎟
그리고 의 결정이다 M :det(M)M
det(M)=a(ei−fh)−b(di−fg)+c(dh−eg)
작동 예
예를 들어 입력이이라고 가정 해 봅시다 0, -3, -2, 1, -4, -2, -3, 4, 1
. 이것은 매트릭스에 해당합니다.
M=⎛⎝⎜01−3−3−44−2−21⎞⎠⎟
먼저 위의 공식을 사용하여 결정 요인을 계산해 보겠습니다.
det(M)=0(−4×1−(−2)×4)−(−3)(1×1−(−2)×−3)+(−2)(1×4−(−4)×−3)=1
다음으로 보조 인자의 행렬을 계산해 봅시다 :
C=⎛⎝⎜−4×1−(−2)×4−(−3×1−(−2)×4)−3×−2−(−2)×−4−(1×1−(−2)×−3)0×1−(−2)×−3−(0×−2−(−2)×1)1×4−(−4)×−3−(0×4−(−3)×−3)0×−4−(−3)×1⎞⎠⎟
=⎛⎝⎜4−5−25−6−2−893⎞⎠⎟
그런 다음 C 를 바꿉니다.C 얻기 위해 (행과 열을 플립) :CT
CT=⎛⎝⎜45−8−5−692−23⎞⎠⎟
마지막으로 다음과 같이 역을 찾을 수 있습니다.
M−1=1det(M)CT=11⎛⎝⎜45−8−5−692−23⎞⎠⎟=⎛⎝⎜45−8−5−692−23⎞⎠⎟
따라서 출력은입니다 4, -5, -2, 5, -6, -2, -8, 9, 3
.
규칙
주어진 행렬은 항상 역수 (즉, 비단 수)입니다. 행렬은 자기 역수 일 수 있습니다
주어진 행렬은 항상 9 개의 정수를 가진 3x3 행렬입니다.
입력의 숫자는 항상 범위의 정수가 될 것이다 −1000≤n≤1000
행렬의 정수가 아닌 성분은 소수 또는 분수로 주어질 수 있습니다
예
Input > Output
1, 0, 0, 0, 1, 0, 0, 0, 1 > 1, 0, 0, 0, 1, 0, 0, 0, 1
0, -3, -2, 1, -4, -2, -3, 4, 1 > 4, -5, -2, 5, -6, -2, -8, 9, 3
1, 2, 3, 3, 1, 2, 2, 1, 3 > -1/6, 1/2, -1/6, 5/6, 1/2, -7/6, -1/6, -1/2, 5/6
7, 9, 4, 2, 7, 9, 3, 4, 5 > -1/94, -29/94, 53/94, 17/94, 23/94, -55/94, -13/94, -1/94, 31/94
승리
바이트 단위의 가장 짧은 코드가 이깁니다.