[파이썬][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)
위의 코드에서는 다음을 수행합니다:
-
대칭 양의 정부호 행렬 �A를 생성합니다. 이 예제에서는 행렬을 대각 행렬로 설정하였습니다.
-
상수 벡터 �b를 생성합니다.
-
초기 추정값 �0x0을 설정합니다.
-
SciPy의
cg
함수를 사용하여 공압 그래디언트 방법을 적용하여 선형 시스템을 풉니다. -
해와 반복 횟수를 출력합니다.
공압 그래디언트 방법은 대칭 양의 정부호 행렬을 다루는데 효과적이며, 반복적으로 해를 개선하여 수렴합니다. 이 예제에서는 간단한 대각 행렬을 사용했지만, 일반적으로는 실제 응용에서 복잡한 행렬을 다루게 됩니다.