Divide and Conquer
고정점 방법 Fixed point Method 본문
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