我想知道是否有一个方便的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)
Run Code Online (Sandbox Code Playgroud)
但是我的猜测是大多数人会同意这段代码的可读性低.有什么建议?
War*_*ser 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.])
Run Code Online (Sandbox Code Playgroud)
该poly1d
对象实现了返回新poly1d
对象的算术运算,因此p - y
是一个新的poly1d
:
In [22]: p - y
Out[22]: poly1d([ 1, 1, -110])
Run Code Online (Sandbox Code Playgroud)
a的roots
属性poly1d
返回您期望的内容.