我的问题如下。我有一个代码,为给定的x计算函数f(x)的值。然而,由于f(x)有点太大而且复杂,并且程序必须在不同的时间步长通过非常大的数据集(x),因此效率不高。我想知道是否有一个函数可能在scipy,所以我可以创建一个具有不同已经计算的f(x)值的表,就像保存在文件“function.txt”一样的表(当然在我的情况下)从值1e0,1e8开始,表格会更大:
x f(x)
1 1
2 4
3 9
4 16
5 25
然后以某种方式使用插值,这样如果我的程序读取x = 2.2,它可以从表中已经计算的值估计值f(x)。
答案 0 :(得分:0)
你在numpy中有polyfit和polyval:
import numpy as np
x=np.arange(1,6)
y=np.array((1,4,9,16,25))
coeffs=np.polyfit(x,y,deg=5) # eval your polynomial coefficients
x2=np.linspace(np.min(x),np.max(x),1000)
y2=np.polyval(coeffs,x2) # apply your polynomial coeff to a broader set of data
答案 1 :(得分:0)
我实际上可以使用interp1d以一种非常简单的方式做我想做的事。举个例子来说明我以前用过的数字。
import numpy
from scipy.interpolate import interp1d
x = numpy.linspace(1, 100, 1000)
y = x**2
f = interp1d(x, y)
xnew = 2.2
ynew = f(x)
print f(x)
输出:4.84095446798