Divide and Conquer

고정점 방법 Fixed point Method 본문

성장캐/수치해석

고정점 방법 Fixed point Method

10살 2022. 4. 25. 22:15
728x90

틀린 값을 계속 대입해서 같아질 때까지 반복
좌항이 일차항, x= ~ 로 일차항 보조 방정식을 만듦
이전 값과 현재 값이 동일하면 근을 찾았다
이분법보다 빠르고 초기값 1개만 줌
못 찾을 수도 있음, 특성 방정식과 초기값 설정이 중요
고정점 방법은 어떠한 형태의 특성함수도 동일한 수렴 속도를 보인다 거짓
def g(x):

좌변을 x 일차항으로 바꿔 
구간 설정따로 안 해
# 고정점
def g(x):
    return (1 / 3) *(np.cos(x) + 1)

n = 20 
x0 = 3.0
x = np.zeros(n)
x[0] = x0

for i in range(n-1):
    x[i+1]= g(x[i])
    
print("%5s %8s"%('k', 'x'))
for k in range(n):
    print(("%5d %9.4f"%(k+1, x[k])))
import matplotlib.pyplot as plt

plt.plot(np.arange(n), x)
plt.xlabel('iterations')
plt.ylabel('x')
plt.show()
def f(x):
    return -x**2 + 6*x -5

x= np.linspace(-10.0, 10.0, 100)
y= f(x)

plt.plot(x, y)

plt.grid()
plt.show()


def func(x):
    return x*np.cos(3*x) +1

def g(x):
    return -1 / np.cos(3*x)
    
n = 25
x0 =  1
x = np.zeros(n)
x[0] = x0

for i in range(n-1):
    x[i+1]= g(x[i])
    
print("%5s %8s"%('k', 'x'))
for k in range(n):
    print(("%5d %9.4f"%(k+1, x[k])))
    
# -1.7708
import matplotlib.pyplot as plt

x = np.linspace(-3, 2, 100) 
y = -1/ np.cos(3*x)

plt.plot(x, y) 
#plt.ylim(-13, 70)

x = np.linspace(-2, 0, 100)
y = func(x)

a = -2.2
b = 2
fa = func(a)
fb = func(b)

plt.plot(x, y, 'g')
plt.stem([a, b], [fa, fb], use_line_collection = True)
plt.grid()

근이 여러개인 경우 해당 구간의 근을 구하는 방법이 필요하다

반응형

'성장캐 > 수치해석' 카테고리의 다른 글

할선법 Secant Method  (0) 2022.04.25
뉴튼랩슨 Newton-Raphson  (0) 2022.04.25
이분법 Bisection method  (0) 2022.04.25
방정식의 근 구하기 개요  (0) 2022.04.15
수학 목차  (0) 2022.02.28
Comments