使用Matplotlib绘制导数图像不符预期,如何解决?
问题解决方案
核心问题分析
- 函数错误:你需要绘制导数图像,但当前代码直接使用了原三次函数,没有计算导数。原三次函数的导数是二次函数,这才是正确图像对应的函数。
- x轴范围过大:原代码中
x=np.linspace(-100,100,num=50)的区间跨度太大,三次函数在该区间的数值量级极大,导致图像细节被完全压缩,调整采样点数无法解决这个问题。
修正后的代码
import numpy as np import matplotlib.pyplot as plt # 缩小x范围,聚焦函数变化明显的区域 x = np.linspace(-1, 1, num=100) # 计算原函数的导数:f'(x) = 168x² - 77.998x + 4.196 derivative_func = 168 * (x**2) - 77.998 * x + 4.196 plt.plot(x, derivative_func) plt.xlabel('x') plt.ylabel("f'(x)") plt.title('导数函数图像') plt.grid(True) plt.show()
关键说明
- 导数计算:原函数
f(x)=56x³-38.999x²+4.196x-0.15的导数遵循求导法则:- 三次项求导:
3*56x² = 168x² - 二次项求导:
2*(-38.999)x = -77.998x - 一次项求导:
4.196 - 常数项导数为0
- 三次项求导:
- x范围调整:将x区间缩小到
[-1,1],可以清晰看到导数函数的曲线形态,与你预期的正确图像匹配。 - 采样点数:增加采样点数到100,能让曲线更平滑,但这不是解决问题的核心,核心是函数和x范围的修正。
内容的提问来源于stack exchange,提问作者Luis Gomez
相关产品推荐
相关产品推荐

