JavaScript에서 2x2 역행렬 함수 작성
11313 단어 programmingjavascripttutorial
이다:
(ad - bc)
1 /determinate
를 곱합니다.따라서 역함수는 다음과 같이 계산할 수 있습니다.
알고리즘으로 구현하기 위해 행렬은 2배열의 배열로 표현됩니다. 예: [[a,b], [c,d]]
첫 번째 단계는
[0][0]
와 [1][1]
를 바꾸는 것입니다.let temp = [0][0];
matrix[0][0] = matrix[1][1];
matrix[1][1] = temp;
그런 다음 2단계에서
[0][1]
및 [1][0]
인 마지막 남은 요소를 부정해야 합니다. 단순히 -1
를 곱하여 부정할 수 있습니다.matrix[0][1] *= -1;
matrix[1][0] *= -1;
a *= -1
는 a = a * -1
를 쓰는 또 다른 짧은 방법입니다.공식
ad - bc
을 사용하여 확정값을 계산합니다.이 단계는 간단한 계산입니다.
let determinate = (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]);
마지막 단계는 각 요소에
1/determinate
를 곱하여 쉽게 수행할 수 있습니다.matrix[0][0] *= (1/determinate);
matrix[0][1] *= (1/determinate);
matrix[1][0] *= (1/determinate);
matrix[1][1] *= (1/determinate);
내장된
map()
, flat()
및 splice()
함수를 사용하여 이 단계를 더 멋진 문장으로 리팩터링할 수 있습니다.const flatMapped = matrix.flat().map(el => el * 1/determinate);
matrix = [flatMapped.splice(0, 2), flatMapped.splice(0, 2)];
[[a,b], [c,d]]
에서 [a,b,c,d]
로 변환한 다음 각 요소에 결정자를 곱합니다. 두 번째 진술은 이해하기 약간 까다롭습니다.
splice()
함수는 배열에서 요소를 삭제하고 첫 번째 매개변수로 시작 인덱스를 사용하고 선택적 삭제 수를 두 번째 매개변수로 사용하여 배열로 반환합니다.[[a,b][c,d]]
형식으로 되돌리기 위해 처음 2개 요소(인덱스 0에서 시작)에 대해 splice()
를 호출하여 제거하고 행렬에 추가합니다. splice()
에 대한 첫 번째 호출이 a
및 b
요소를 제거했기 때문에 c
및 d
만 남습니다(splice()
는 변경 가능). 마지막 2개의 요소를 가져와 반환할 행렬에 푸시합니다. 이제 모든 단계를 결합하여 기능을 생성할 수 있습니다
calculateInverse
.function calculateInverse(matrix) {
// Step 1 - Swap a and d
let temp = [0][0];
matrix[0][0] = matrix[1][1];
matrix[1][1] = temp;
// Step 2 - Negate b and c
matrix[0][1] *= -1;
matrix[1][0] *= -1;
// Step 3 - Calulate determinate
let determinate = (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]);
// Step 4 - Multiply indices by 1/determinate
const flatMapped = matrix.flat().map(el => el * 1/determinate);
matrix = [flatMapped.splice(0, 2), flatMapped.splice(0, 2)];
return matrix
}
참고: 이 기능은 2x2 매트릭스에서만 작동합니다. 더 큰 행렬의 역행렬을 계산하기 위한 추가 요구 사항이 있습니다.
우리의 기능을 향상시키기 위해 가능한 다음 단계:
읽어 주셔서 감사합니다 :)
연결:
Reference
이 문제에 관하여(JavaScript에서 2x2 역행렬 함수 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jtlavs/writing-a-2x2-inverse-matrix-function-in-javascript-1kj7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)