⦁ 순수 가우스 소거법의 개념

⦁ 순수 가우스 소거법 구현
import numpy as np
# 계수행렬
a = [[3, 4, 3],
[1, 5, -1],
[6, 3, 7]]
# 상수벡터
b = [10, 7, 1]
# X 벡터
x = [0, 0, 0]
# 미지수 개수
n = 3
# 입력값 확인
print(np.matrix(a))
print(np.matrix(b))
# 전진소거
for k in range(n-1): # k번째열(현재 열)의 아래쪽 요소들을 0으로 만든다. 마지막 열은 이미 상삼각 행렬의 형태이므로 -1
for i in range(k+1,n): # i: 행 인덱스, 현재 열(k)의 아래쪽 행(row)들을 의미. 첫번째 열이면 첫번째 행 아래 원소들
for j in range(k,n): # j: 열 인덱스
a[i][j] = a[i][j] - a[i][k]/a[k][k]*a[k][j]
b[i] = b[i] - a[i][k]/a[k][k]*b[k]
# 전진소거 개선
for k in range(n-1):
for i in range(k+1,n):
xmult = a[i][k]/a[k][k]
for j in range(k,n):
a[i][j] = a[i][j] -xmult*a[k][j]
b[i] = b[i]-xmult*b[k]
# 역대입
x[n-1] = b[n-1]/a[n-1][n-1]
s = 0 # 초기화
for i in range(n-2,-1,-1):
s = b[i]
for j in range(i+1,n):
s = s - a[i][j]*x[j]
x[i] = s/a[i][i]
# x 출력
for i in range(n):
print(i,x[i])
⦁ 순수 가우스 소거법의 한계
