Python 参数个数变化的多项式函数

Python 参数个数变化的多项式函数,python,function,dynamic,parameters,Python,Function,Dynamic,Parameters,在Python中,是否可以定义一个参数数量不断变化的多项式类型的函数?参数的数量应根据输入文件中的数据系列的数量进行更改 目前我有这样的想法: def y(x, a0, x2, x3, x4): y = a0 + a1*x + a2*x**2 + a3*x**3 return y 当然,我可以通过额外的参数将高阶参数设置为零,但是否有更好的方法。您可以循环使用参数并计算多项式,这非常有效 def y(x, *args): y = 0 for a in reversed(

在Python中,是否可以定义一个参数数量不断变化的多项式类型的函数?参数的数量应根据输入文件中的数据系列的数量进行更改

目前我有这样的想法:

def y(x, a0, x2, x3, x4):
    y = a0 + a1*x + a2*x**2 + a3*x**3
    return y

当然,我可以通过额外的参数将高阶参数设置为零,但是否有更好的方法。

您可以循环使用参数并计算多项式,这非常有效

def y(x, *args):
  y = 0
  for a in reversed(args):
    y = y*x+a
  return y

您可以在这里找到更多关于变量数量的详细信息。

使用生成器表达式的更简单版本

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))

在这种特殊情况下,将多项式作为单个参数(即系数列表)提供会更简洁:

 def eval_poly(x, poly):
     ....

 eval_poly(10, [1, 2, 3]) # evaluate (1 + 2x + 3x^2)(10)
这样,您可以像处理普通值一样处理多项式,例如:

 def add_poly(p1, p2):
     """Add two polynomials together"""
     ...

 p1 = [1,2,3]
 p2 = [4,5,6]

 print eval_poly(10, add_poly(p1, p2))

如果您正在处理数据文件并计算多项式,那么使用
numpy
,可能会使您受益匪浅,这还包括计算多项式。

有关霍纳方法的解释,请参阅根据问题中的签名,您必须还原args…如果您从a\n循环到a\n,则您的算法有效_0@TheodrosZelleke对的我现在通过添加“反向”来修正这个问题。
 def add_poly(p1, p2):
     """Add two polynomials together"""
     ...

 p1 = [1,2,3]
 p2 = [4,5,6]

 print eval_poly(10, add_poly(p1, p2))