Numpy中如何使用numpy(和scipy)找到函数的所有零点

您所在的位置:网站首页 零点是函数值为0的点 Numpy中如何使用numpy(和scipy)找到函数的所有零点

Numpy中如何使用numpy(和scipy)找到函数的所有零点

2024-07-12 07:41| 来源: 网络整理| 查看: 265

Numpy中如何使用numpy(和scipy)找到函数的所有零点

在本文中,我们将介绍如何使用Numpy和Scipy找到一个函数的所有零点,以及如何绘制函数和它的零点。

阅读更多:Numpy 教程

函数的零点

首先,我们需要了解什么是函数的零点。零点是一个函数在其定义域内的解,也就是函数的自变量使函数值为0的点。例如,函数f(x) = x^2 – 1的零点为x=-1和x=1。

在Numpy中,我们可以使用np.roots()函数来计算这个函数的零点:

import numpy as np coeffs = [1, 0, -1] np.roots(coeffs)

这将产生以下输出:

array([-1., 1.])

我们也可以使用Scipy中的optimize.root()函数来找到函数的根。它需要一个输入函数和一个初始猜测值。例如,下面是用Scipy找到f(x) = x^2 – 1的根的代码:

from scipy import optimize def f(x): return x**2 - 1 root = optimize.root(f, 0.5) print(root.x)

这将产生以下输出:

array([1.])

请注意,optimize.root()只返回一个根,因此我们需要多次调用此函数来找到所有根。

绘制函数和根

现在我们知道如何找到一个函数的根,让我们尝试将函数和它的根绘制出来。要绘制函数和根,我们将使用Matplotlib库。

首先,我们定义函数及其定义域:

import numpy as np import matplotlib.pyplot as plt def f(x): return x**3 - 2*x**2 + x - 2 x_vals = np.linspace(-2, 3, 200)

接下来绘制函数曲线:

y_vals = f(x_vals) plt.plot(x_vals, y_vals, 'r-') plt.axhline(0, color='gray', lw=1) plt.xlabel('x') plt.ylabel('f(x)') plt.title('f(x) = x^3 - 2x^2 + x - 2') plt.show()

我们可以看到这个函数有两个零点

现在,我们将使用np.roots()函数找到这个函数的所有根,并将它们绘制在同一个图表上:

coeffs = [1, -2, 1, -2] roots = np.roots(coeffs) plt.plot(x_vals, y_vals, 'r-') for r in roots: plt.plot(r, 0, 'bo') plt.axhline(0, color='gray', lw=1) plt.xlabel('x') plt.ylabel('f(x)') plt.title('f(x) = x^3 - 2x^2 + x - 2') plt.show()

我们可以看到函数的根被表示为蓝色圆点。

总结

在本文中,我们学习了如何使用Numpy和Scipy找到函数的所有零点,并使用Matplotlib绘制函数曲线和根。Numpy和Scipy提供的函数使找寻函数的零点变得非常容易。Matplotlib提供的可视化工具可以帮助我们更好地理解函数及其根的性质。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3