선형대수학/implement_linearAlgebra
소거법을 이용한 Ax = b 의 풀이
명징직조지훈
2023. 1. 8. 09:35
R^3 공간에서 세 평면이 만나는 것을 시각화하기는 쉽지 않다. R^n 공간에서 초평면 n 개가 한 점에서 만남을 시각화하기도 어려움,
하지만 열벡터의 일차결합은 쉽다. 행렬 A 에는 반드시 3(또는 n) 개의 일차독립인 벡터가 있어야 한다. 그리고 이 열들은 반드시 R^3 의 동일한 평면에 있지 않아야 한다. 대수학에서는 다음과 같은 문장으로 해석할 수 있다.
일차독립인 열 Ax = 0 의 유일한 해는 영벡터 x = 0 이다.
즉, 일차독립은 모든 열에 0을 곱하는 경우에만 열들의 결합이 영벡터가 됨을 의미한다. 그러면 Ax = 0 의 해는 x = 0 이 유일하다. 해가 유일하다면 열벡터의 일차결합이 b 가 되는 유일한 결합을 소거법으로 찾아 Ax = b 의 해를 구할 수 있다.
소거법을 열 하나 하나에 대입
A = np.array(([1,2,3,4],[6,7,8,9],[7,13,12,11],[13,17,4,3]))
A
>>>
array([[ 1, 2, 3, 4],
[ 6, 7, 8, 9],
[ 7, 13, 12, 11],
[13, 17, 4, 3]])
for i in range(A.shape[0]-1):
a = A[i][i]
if(a == 0):
continue
for j in range(i+1, A.shape[0]):
A[j] = A[j] - (A[j][i] / a) * A[i]
A
>>>
array([[ 1, 2, 3, 4],
[ 0, -5, -10, -15],
[ 0, 0, -7, -14],
[ 0, 0, 0, 12]])
위 방법을 통해 위 삼각 행렬 U 를 얻을 수 있다.
이는 b 가 아닌 행렬 A 에 중점을 둔 방법,
A 를 이용한 소거법은 오른쪽의 b 에 대한 n^2 단계의 계산보다 더 많은 곱셈과 덧셈을 분리하여 1/3 * n^3 번의 곱셈과 덧셈을 해야 ㅎ한다.