Linear system
10×10 행렬 A 와 우변 벡터 b 가 주어졌을 때, 이 페이지의 결과는
A x = b 를 만족하는 해 벡터 x 입니다.
Steps
- 새 파일을 만드세요.
- 텐서 카테고리에서 행렬 만들기 블록을 꺼내, 10×10 크기로
행렬
A를 만드세요. 값은 손으로 채우거나 랜덤 행렬 블록으로 채울 수 있습니다. - 같은 카테고리의 벡터 만들기 블록으로 길이 10의 우변
b를 만드세요. - 행렬 곱, 역행렬, 전치, 행렬식, trace 등의
행렬 연산 블록 중 역행렬 을 꺼내고, 입력으로
A를 넘기세요. 그리고 결과를Ainv에 저장하세요. - 행렬·벡터 곱 블록으로
x = Ainv · b를 계산하세요. - 로그로 보내기 또는 행렬 표시 패널로
x를 출력하세요.
Pitfalls
A가 특이 행렬(역행렬이 없는 행렬)이면 결과가 발산하거나 엉뚱한 값이 나옵니다. 행렬식 블록으로det(A)를 먼저 확인하세요. 값이0에 가까우면 특이 행렬일 가능성을 의심해야 합니다.- 큰 행렬에서는 역행렬을 직접 구하는 대신 LU 분해 같은 방법을 쓰는 편이 수치적으로 더 안정적입니다. 다만 10×10 정도 크기에서는 차이가 크지 않습니다.
Variations
- 고유값 — 같은 카테고리의 고유값 블록으로
A의 고유값과 고유벡터를 구할 수 있습니다. - 연립방정식 여러 개 — 우변
b가 여러 개라면b를 행렬로 만들고Ainv와 곱하세요. 결과 행렬의 각 열이 각 우변에 대한 해입니다. - 검증 — 구한
x로A · x를 다시 계산해b와 같은지 확인하세요. 부동소수점 오차 범위 안에서 일치해야 합니다.
Accuracy
Simulizer는 내부적으로 TensorFlow.js의 64-bit 부동소수점 행렬 연산을 사용합니다.
A 의 조건수가 크면(나쁘게 조건화된 행렬) 결과의 신뢰성이 떨어집니다.
손으로 직접 만든 작은 행렬은 대부분 안전합니다.