我想知道是否有一个方便的np.polyval()的反函数,可以输入y值并求解x?
我知道一种方法可以做到这一点:
import numpy as np
# Set up the question
p = np.array([1, 1, -10])
y = 100
# Solve
p_temp = p
p_temp[-1] -= y
x = np.roots(p_temp)
然而,我猜大多数人都会认为这段代码可读性较低。有什么建议吗?
这样的东西怎么样?
In [19]: p = np.poly1d([1, 1, -10]) # Use a poly1d to represent the polynomial.
In [20]: y = 100
In [21]: (p - y).roots
Out[21]: array([-11., 10.])
poly1d
对象实现算术运算以返回一个新的 poly1d
对象,因此 p - y
是一个新的 poly1d
对象:
In [22]: p - y
Out[22]: poly1d([ 1, 1, -110])
< p > poly1d
的 roots
属性返回您所期望的内容。