본문 바로가기
수치해석

순수 가우스 소거법 알고리즘

by aqua_marri 2024. 1. 2.

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

 
⦁ 순수 가우스 소거법 구현 

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])

 
⦁ 순수 가우스 소거법의 한계

 

'수치해석' 카테고리의 다른 글

보간법  (0) 2024.01.03
f(x)=0의 해를 구하는 방법 - 이분법, 뉴턴법, 할선법  (0) 2024.01.03
부동소수점 표현  (0) 2024.01.02
테일러 급수  (0) 2024.01.02
축소곱셈법  (9) 2024.01.02