선형대수학/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 번의 곱셈과 덧셈을 해야 ㅎ한다.