資源簡介
使用python實現(xiàn)自然樣條插值,并繪出圖像
代碼片段和文件信息
__author__?=?‘xlluffy‘
import?numpy?as?np
from?matplotlib.pylab?import?*
point?=?[]
#point?=?[(0?1)?(1?2)?(3?4)?(4?5)?(5?6)?(6?7)]
n?=?5
x?=?arange(0?5?0.01)
y?a?b?c?d?h?s??=?[]?[]?[]?[]?[]?[]?[]
def?foo(x):
????return?2*sin(2*x)?+?1
def?getPoint():
????tmpX?=?[0?1.5?2.1?2.8?3.9?4.9]
????for?i?in?tmpX:
????????point.append((i?foo(i)))
def?init():
????for?i?in?range(n+1):
????????a.append(0)
????????b.append(0)
????????c.append(0)
????????d.append(0)
????????h.append(0)
????????s.append(0)
def?Hermite():
????init()
????for?i?in?range(n):
????????h[i]?=?point[i+1][0]?-?point[i][0]
????a[1]?=?2*(h[0]?+?h[1])
????for?i?in?range(2?n):
????????a[i]?=?2*(h[i-1]?+?h[i])?-?h[i-1]*h[i-1]/a[i-1]
????for?i?in?range(1?n+1):
????????c[i]?=?(point[i][1]?-?point[i-1][1])?/?h[i-1]
????for?i?in?range(1?n):
????????d[i]?=?6*(c[i+1]?-?c[i])
????b[1]?=?d[1]
????for?i?in?range(2?n):
????????b[i]?=?d[i]?-?b[i-1]*h[i-1]/a[i]
????s[n-1]?=?b[n-1]/a[n-1]
??
評論
共有 條評論