728x90
def shift_inv_power_method(list_, x0, alpha, k):
# list_ <- input list
# x0 <- initial vector x0 whose largest entry is 1
# e.g x0=[[1],[0],[0]]
# alpha <- shift value
# k <- times
# 가시성을 위해 transpose matrix로 출력
import numpy as np
shift_list = list_ - alpha*np.eye(len(list_))
shift_list_inv = np.linalg.inv(shift_list)
for i in range(k+1):
print(f'times: {i}')
print('----------------')
print(f'x_transpose : {x0.T}')
y=shift_list_inv@x0
mu=max(y)
v=alpha+(1/mu)
x0=(1/mu)*y
print(f"y(matrix).transpose: {y.T}")
print(f'v: {v}')
print('----------------')
A=np.array([[0.96, 1.36, 0.52],[-5.76, 6.84, 2.88], [-8.4,5.6,6.2]])
x0=np.array([[1],[0],[0]])
alpha=1.9
################################################
shift_inv_power_method(A, x0, alpha, 5)
so simple !
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/015.gif)
728x90