如何使用 Python 和 Matplotlib 计算并绘制函数的导数?


函数的导数是微积分中使用的关键概念之一。它是衡量当我们改变输出时函数变化多少的指标。

Matplotlib 是 Python 的绘图库,因为它没有提供直接计算函数导数的方法,因此您需要使用 NumPy,它也是 Python 库之一,您可以使用它来计算函数的导数,并使用 Matplotlib 来可视化结果。

在本文中,我们将使用 NumPy 库计算函数的导数,并借助 Python 中的 Matplotlib 对其进行可视化。

什么是函数的导数?

导数是函数相对于其输入变化的速率。它给出函数在任意一点的切线的斜率,还可以用于查找最大值、最小值、临界点和拐点。函数 f(x) 的导数定义为差商在 x 的变化接近于零时的极限。解释它的数学表达式如下:

 f`(x) = lim (h -> 0) [(f(x + h) – f(x)) / h] 

这里,极限表示函数在 x 处的瞬时变化率。

Python 中的 Matplotlib 是什么?

Matplotlib 是 Python 最流行的可视化库之一。它广泛用于科学计算领域。它支持各种绘图类型并提供许多自定义选项,它还可以与 NumPy 和其他科学计算库集成。

使用 Matplotlib 计算函数的导数

由于 Matplotlib 中没有直接计算函数导数的方法,我们需要使用公式来计算导数,并使用图形绘制结果。请按照以下步骤操作 -

步骤 1 – 首先导入所需的模块,即 matplotlib 和 numpy。

import numpy as np
import matplotlib.pyplot as plt

步骤 2 – 导入模块后,定义您想要微分的函数。让我们以 f(x) = x2 为例

Def f(x):
    return x**2

步骤 2 – 现在,定义要绘制函数和导数的 x 值范围。让我们取一个 [-4, 4] 的范围

x = np.linspace(-4, 4, 1000)

步骤 3 – 然后,使用 numpy 的 gradient() 函数,我们可以计算函数的导数。此函数的作用是计算值数组的数值梯度,它是导数的近似值。

dfdx = np.gradient(f(x), x)

步骤 4 – 为了绘制原始函数及其导数,我们将使用 matplotlib。作为输出,将创建一个绘图。

plt.plot(x, f(x), label = ‘f(x)’)
plt.plot(x, dfdx, label = ‘df/dx’)
plt.legend()
plt.show()

示例

在完成所有步骤后,代码和输出将如下所示

import numpy as np
import matplotlib.pyplot as plt
def f(x):
    return x**2
x = np.linspace(-2, 2, 100)
dfdx = np.gradient(f(x), x)
plt.plot(x, f(x), label='f(x)')
plt.plot(x, dfdx, label='df/dx')
plt.legend()
plt.show()

输出

示例

在这里,我们将首先将函数定义为 f(x) = sin(x),然后使用 NumPy 的 gradient 函数计算其导数。然后,我们将尝试使用 Matplotlib 的 plot() 函数绘制原始函数 f(x) 和导数 df/dx

import numpy as np
import matplotlib.pyplot as plt
def f(x):
    return np.sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
dfdx = np.gradient(f(x), x)

fig, ax = plt.subplots()
ax.plot(x, f(x), label='f(x)')
ax.plot(x, dfdx, label="df/dx")
ax.legend()
plt.show()

输出

示例

第一步是使用 numpy 的幂函数定义我们要微分的函数。然后,为了计算一组点上函数的导数,我们将使用 gradient() 函数。

此函数的作用是获取一个值数组,然后返回一个具有相同形状的数组,其中包含给定值的数值导数。

import matplotlib.pyplot as plt
import numpy as np
def f(x):
    return np.power(x, 2)
x = np.linspace(0, 4, 100)
y = f(x)
dy = np.gradient(y, x)
plt.plot(x, y, label='f(x)')
plt.plot(x, dy, label="f'(x)")
plt.legend()
plt.show()

输出

在这里,在每种情况下,我们首先定义了我们要计算其导数的函数。我们使用 numpy 中的 linspace() 函数创建了 x 轴值,并使用它们来计算导数值。最后,我们使用 plot 函数绘制函数及其导数,并使用 legend 函数向图形添加图例。

结论

在本文中,我们使用 python - Matplotlib 计算了函数的导数。我们使用了不同的函数,例如 gradient() 来计算导数,linspace() 来计算值的范围,以及 plot() 分别来绘制函数及其导数。

更新于:2023-10-11

3K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告