我想知道是否有一个方便的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)
然而,我的猜测是大多数人会同意这段代码的可读性低。有什么建议吗?
答案 0 :(得分:12)
这样的事情怎么样?
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])
roots
的{{1}}属性会返回您期望的内容。