使用三次样条插值

时间:2015-11-02 18:02:31

标签: python interpolation cubic-spline

#plotted log values of Re and C(d)
import numpy as np
import matplotlib.pyplot as plt 
plt.plot([np.log(0.2),np.log(2), np.log(20), np.log(200), np.log(2000), np.log(20000)], [np.log(103), np.log(13.9), np.log(2.72), np.log(0.800), np.log(0.401), np.log(0.433)], 'r-^')
plt.ylabel('C(D)')
plt.xlabel('Re')
plt.show()


#Then we Interpolate
import scipy 
from scipy.interpolate import interpolate
scipy.interpolate.interp1d('x', 'y', kind='cubic')
import matplotlib.pyplot as plt
x = np.linspace[np.log(103), np.log(13.9), np.log(2.72), np.log(0.800), np.log(0.401), np.log(0.433)]
y = [np.log(0.2), np.log(2), np.log(20), np.log(200), np.log(2000), np.log(20000)]
f = interp1d(x, y, kind='cubic')
plt.plot(x, f(x))

所以这是我的代码到目前为止插入一组数据并且我已经做到这一点但是我被告知我有一个"整数除法或模数为零"我玩过它但我找不到自己的错误。

1 个答案:

答案 0 :(得分:0)

此行会导致异常。

scipy.interpolate.interp1d('x', 'y', kind='cubic')

您可以查看回溯并查看导致问题的确切位置。这样做是因为你想要数组时给它字符串('x', 'y')。

f = interp1d(x, y, kind='cubic')是正确的,但您没有正确导入interp1d。您想要from scipy.interpolate import interp1df = scipy.interpolate.interp1d(x, y, kind='cubic')

f(x)是没有意义的。插值的整个要点是创建输入点以外的值。如同,不在x数组中的点。