Divide and Conquer
Gauss 소거법 Gauss Elimination 본문
728x90
확장 행렬의
개념 사용, 선을 긋고 종속 벡터를 같이 써줌
가우스는 에셜런 형태로 만드는 과정이야 (주대각 아래를 다 0으로)
- 확장 행렬 만들어
- 에셜런 형태로 만드는
연산 반복
피봇
각 행의 대각선에 있는 요소들
피보팅
방정식의 순서를 바꾸는 것(행렬의 위아래 순서 등)
계산상의 문제를 해결할 뿐만 아니라 오차를 줄여주는 역할도 함
[0,1][1,0] 항등 행렬에서 만들고 싶은 피봇팅대로 변환하면 된다 이게 피봇팅 매트릭스
부분 피보팅 paritial pivoting
→ 주대각이 가장 크도록 하는 피봇팅
방정식의 각 행에서 피보팅을 하게 될 열을 모두 살펴보아서 가장 큰 계수가 있는 행이 피보팅 계수가 되도록 순서를 바꾸는 방식
주대각으로 나눠주기 때문에 주대각의 숫자가 큰 게 좋다
작은 값이 커지면 오차가 커진다(주대각이 큰 게 좋다)
numpy.linalg.solve(a, b)
import numpy as np
from numpy.linalg import solve
a = np.array([[1, 3, -5], [2, -9, 4], [3, 1, 2]])
b = np.array([2, 5, -3])
x = solve(a, b)
print( 'x = ', x)
# AX=B 일 때, X=A(역행렬)B 임을 확인
ainv = np.linalg.inv(a)
x = ainv.dot(b)
print("x =",x)
# 위의 근이 올바른지 체크
np.allclose(np.dot(a, x), b)
반응형
'성장캐 > 수치해석' 카테고리의 다른 글
LU 분해 LU decomposition (0) | 2022.06.21 |
---|---|
수치미분 numerical differentiation (0) | 2022.06.20 |
선형 연립방정식의 해법 (0) | 2022.04.25 |
할선법 Secant Method (0) | 2022.04.25 |
뉴튼랩슨 Newton-Raphson (0) | 2022.04.25 |
Comments