如何用Matplotlib绘制可微函数?ODE求解后绘图无输出求错误排查
如何用Matplotlib绘制可微函数
绘制可微函数的核心是生成足够密集的自变量取值,计算对应函数值后用Matplotlib连线绘图,步骤如下:
- 导入依赖库:
numpy用于生成数值序列,matplotlib.pyplot用于绘图 - 定义可微函数:确保函数在定义域内可导且能处理数组输入
- 生成自变量范围:用
np.linspace生成连续的x值,点数越多曲线越平滑 - 计算函数值:代入自变量得到对应的y值
- 绘图并展示:添加标签、标题后显示图形
示例代码:
import numpy as np import matplotlib.pyplot as plt # 定义一个可微函数 def differentiable_func(x): return np.exp(-x**2) + np.cos(2*x) # 生成x的取值范围 x = np.linspace(-3, 3, 1000) # 计算函数值 y = differentiable_func(x) # 绘图 plt.plot(x, y, label='f(x) = e^(-x²) + cos(2x)') plt.xlabel('x') plt.ylabel('f(x)') plt.title('Plot of a Differentiable Function') plt.legend() plt.show()
你的微分方程绘图代码错误修复
你的代码存在库导入缺失的核心问题,导致无法运行生成图形,同时可优化部分细节,修复后的代码及错误说明如下:
错误点说明
- 未导入必要库:代码中使用了
np.sqrt、np.linspace但未导入numpy;使用odeint但未导入scipy.integrate.odeint;使用plt绘图但未导入matplotlib.pyplot - 导入了无用模块:
sympy.plotting未被使用,可删除 - 可选优化:
np.linspace默认仅生成50个点,增加点数可让曲线更平滑
修复后的完整代码
import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt def func(y, t): return 3*t - np.sqrt(y) # 生成更密集的时间点 t = np.linspace(0, 5, 100) # 初始条件 y0 = 3 # 求解微分方程 y = odeint(func, y0, t) # 绘图 plt.plot(t, y) plt.xlabel('time') plt.ylabel('y(t)') plt.title("Solution to y' = 3t - sqrt(y)") plt.show()
运行上述代码后,你就能看到微分方程解的曲线了。
内容的提问来源于stack exchange,提问作者username_1326
相关产品推荐
相关产品推荐

