在Python3.10中,我正在try 从一个以系数降序给出的多项式来计算某一Y值上所有可能的实值X值.我希望得到的X值以list
为单位提供给我.
我试过使用numpy
库的roots()
函数,如this post的答案之一所示,但它似乎不起作用:
import numpy as np
import matplotlib.pyplot as plt
def main():
coeffs = np.array([1, 2, 2])
y = 1.5
polyDataX = np.linspace(-2, 0)
polyDataY = np.empty(shape = len(polyDataX), dtype = float)
for i in range(len(polyDataX)):
polyDataY[i] = coeffs[0] * pow(polyDataX[i], 2) + coeffs[1] * polyDataX[i] + coeffs[2]
coeffs[-1] -= y
x = np.roots(coeffs).tolist()
plt.axhline(y, color = "orange")
plt.plot(polyDataX, polyDataY, color = "blue")
plt.title("X = " + str(x))
plt.show()
plt.close()
plt.clf()
if (__name__ == "__main__"):
main()
在上面的例子中,我将多项式的系数按降序存储在局部变量coeffs
中.然后,我try 收集Y值为0.5
的所有X值,分别存储在x
和y
局部变量中.然后,我将收集的X值显示为所示绘图的标题.
The script above results in the following plot:
With the X-values being shown as [-2.0, 0.0]
, instead of the correct:
在Python语言中,获得某一Y值处多项式的所有实X值的正确方法是什么?
感谢您阅读我的帖子,任何指导都将不胜感激.