当我们需要查找多项式的根时,NumPy 提供了一个非常方便的方法——numpy.roots()。
该函数接受一个多项式系数数组作为输入,返回一个包含多项式的根的数组。具体而言,多项式根的数量等于多项式的阶数,并且可以有重复的根。
如果多项式的系数表示为 a0,a1,a2,...,an,则多项式函数的表达式为:
f(x) = a0 * x^n + a1 * x^(n-1) + ... + an-1 * x^1 + an
以下是一个如何使用numpy.roots()查找多项式根的示例。假设我们要找到以下多项式的根:
2x^2 + 4x + 1 = 0
我们将多项式系数存储在数组a中,然后将此数组作为输入传递给numpy.roots()函数。如下所示:
import numpy as np
a = [2, 4, 1]
roots = np.roots(a)
print(roots)
输出:array([-0.5, -1. ])
,我们得到了两个多项式的根,分别为 -0.5 和 -1。这正是我们预期的,因为多项式的阶数为 2。
下面是一个更具挑战性的示例,我们将多项式写成不同的形式:
p(x) = x^4 + 4x^3 - 7x^2 - 5x + 5
为了将此多项式转换为NumPy可以使用的形式,我们需要将系数存储在包含多项式各项系数的数组中。在本例中,多项式系数为:
a = [1, 4, -7, -5, 5]
我们将数组a作为输入传递给numpy.roots()函数,如下所示:
import numpy as np
a = [1, 4, -7, -5, 5]
roots = np.roots(a)
print(roots)
输出:array([-1.51848424, -0.35221575+1.06393033j, -0.35221575-1.06393033j, 1.22291573])
。
我们得到了4个多项式的根,我们可以将其可视化,如下所示:
import numpy as np
import matplotlib.pyplot as plt
a = [1, 4, -7, -5, 5]
roots = np.roots(a)
# 将根绘制在复平面中
fig, ax = plt.subplots()
ax.plot(roots.real, roots.imag, 'o')
ax.set_xlabel('Real')
ax.set_ylabel('Imaginary')
ax.set_title('Roots of $p(x)$')
plt.show()
输出:对于这个多项式,我们可以看到它有两个实根和两个复根。
总之,我们可以看到,使用NumPy中的numpy.roots()函数查找多项式的根非常容易,只需将多项式系数存储在数组中,然后将该数组作为输入传递给该函数。无论您面对的多项式是什么形式,使用此方法都可以快速找到多项式的所有根。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用NumPy查找多项式的根 - Python技术站