[Python에 의한 과학·기술 계산] 3차 스플라인 보간, scipy
내용
보기: $y=1/(1+x^2)$를 생각한다. 11 점의 데이터 세트 $ (x_i, y_i) $를 샘플링하고 보간합니다.
이 함수는 라그랑주 보간에서는 효과가 없다 (Qiita 기사 참조).
from scipy.interpolate import interp1d
import numpy as np
import matplotlib.pyplot as plt
x =np.linspace(-5,5,num=11)
y = 1.0/(1.0+x**2)
f_line = interp1d(x, y)
f_CS = interp1d(x, y, kind='cubic') #3次スプライン補間実行!
#for plot
xnew =np.linspace(-5,5,num=51)
plt.plot(x, y, 'o', xnew, f_CS(xnew), '-')
plt.legend(['Raw data','Lagrange', 'Cubic spline'], loc='best')
plt.xlim([-6, 6])
plt.ylim([0, 1.4])
plt.show()
결과
청인이 샘플한 11개의 데이터점. 오렌지선이 스플라인 보간한 것.
[부록]
아래 그림과 같이 라그랑주 보간에서는이 함수를 잘 보간 할 수 없습니다.
청인이 샘플한 11개의 데이터점. 오렌지선이 스플라인 보간, 녹색선이 라그랑주 보간한 것으로 양단 근방에서 부자연스러운 진동을 일으킨다.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 3차 스플라인 보간, scipy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sci_Haru/items/059887598e4f21b4b636텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)