如何从系数列表中构建多项式lambda函数?

Chr*_*ris 3 python lambda numpy function mpmath

我有一个与多项式表达式对应的系数列表,即:[1,2,0]对应于x^2 + 2x + 0.我想将这些系数的任意长度数组放入lambda函数中.

具体来说,我使用的是mpmath,我有一个用于polyval模块的列表:

polyval(ctx, coeffs, x, derivative=False)
Run Code Online (Sandbox Code Playgroud)

给定系数和数字,polyval()评估多项式.

我需要使用 带有一维函数的findroot模块,即:

findroot(lambda x: x**3 + 2*x + 1, 2)
Run Code Online (Sandbox Code Playgroud)

如何从系数列表中构造lambda函数?

sth*_*sth 7

你真的需要一个lambda函数吗?使用"普通"功能应该更容易:

def poly(coeffs):
   def calc(x):
      result = 0
      for c in coeffs:
         result = result*x + c
      return result
   return calc

findroot(poly([1,2,0]))
Run Code Online (Sandbox Code Playgroud)

使用polyval()你提到的功能,这样的东西应该工作:

findroot(lambda x: polyval(ctx, [1,2,0], x))
Run Code Online (Sandbox Code Playgroud)

(适当的ctx价值)