[파이썬][Scipy] 반복법(Iterative Methods) 예제

반복법(Iterative Methods)은 대규모 선형 시스템을 효율적으로 푸는 데 사용되는 수치 해법 중 하나입니다. 이 방법은 반복적인 과정을 통해 점진적으로 정확한 해를 찾아내는 방식으로 동작합니다. 여기에서는 대표적인 반복법 중 하나인 공압 그래디언트 방법(Conjugate Gradient Method)을 예제로 살펴보겠습니다.

공압 그래디언트 방법 예제:

아래 예제에서는 NumPy와 SciPy를 사용하여 공압 그래디언트 방법을 구현하여 선형 시스템을 푸는 방법을 보여줍니다. 선형 시스템은 다음과 같이 주어집니다.

��=�Ax=b

여기서 �A는 대칭 양의 정부호 행렬, �x는 미지수 벡터, �b는 상수 벡터입니다.

mport numpy as np
from scipy.sparse.linalg import cg

# 대칭 양의 정부호 행렬 A 생성 (예제를 위해 행렬을 대각 행렬로 설정)
A = np.diag([4.0, 4.0, 4.0])

# 상수 벡터 b 생성
b = np.array([8.0, 8.0, 8.0])

# 초기 추정값 설정
x0 = np.zeros_like(b)

# 공압 그래디언트 방법을 사용하여 선형 시스템 풀기
x, info = cg(A, b, x0=x0)

# 결과 출력
print("반복법으로 얻은 해:", x)
print("반복 수:", info)

위의 코드에서는 다음을 수행합니다:

  1. 대칭 양의 정부호 행렬 �A를 생성합니다. 이 예제에서는 행렬을 대각 행렬로 설정하였습니다.

  2. 상수 벡터 �b를 생성합니다.

  3. 초기 추정값 �0x0을 설정합니다.

  4. SciPy의 cg 함수를 사용하여 공압 그래디언트 방법을 적용하여 선형 시스템을 풉니다.

  5. 해와 반복 횟수를 출력합니다.

공압 그래디언트 방법은 대칭 양의 정부호 행렬을 다루는데 효과적이며, 반복적으로 해를 개선하여 수렴합니다. 이 예제에서는 간단한 대각 행렬을 사용했지만, 일반적으로는 실제 응용에서 복잡한 행렬을 다루게 됩니다.