是否有可能(在Python中)定义具有可变参数数量的多项式类型的函数?参数的数量应该根据我的输入文件中的数据系列的数量而变化。
目前我有这样的东西:
def y(x, a0, x2, x3, x4):
y = a0 + a1*x + a2*x**2 + a3*x**3
return y当然,我可以通过额外的参数将高阶参数设置为零,但是否有更好的方法。
发布于 2012-08-21 15:26:17
您可以遍历参数并使用Horners method计算多项式,这非常有效。
def y(x, *args):
y = 0
for a in reversed(args):
y = y*x+a
return y您可以在此question中找到有关可变数量参数的更多详细信息。
发布于 2012-08-21 15:54:22
使用生成器表达式的更简单的版本
def y(x, *args):
return sum(a * x ** i for i, a in enumerate(args))和一个使用reduce的Horner版本
def horn(x, *args):
return reduce(lambda y, a: y * x + a, reversed(args))发布于 2012-08-21 15:28:55
def y(x, *args):
y = 0
i = 0
for a in args:
y += a * x ** i
i += 1
return y
print y(2, 1, 2) # 2 * 2 ^ 0 + 2 * 2 ^ 1 = 5https://stackoverflow.com/questions/12050007
复制相似问题