复刻Logistic方程示例图时指数增长函数绘图偏移,求排查建议
排查Logistic方程绘图中指数曲线偏移问题的提示
我尝试复刻《微积分II》「4.4:Logistic方程」章节的图4.4.6,但绘制出的指数增长函数曲线向右偏移,与示例图不符。反复检查后仍未找到问题,恳请提供排查提示。
示例图:
我的绘制结果:
我的代码如下:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-25,25,100) # P(t)=\dfrac{1,072,764e^{0.2311t}}{0.19196+e^{0.2311t}} a = [1072764*np.exp(0.2311*x_val) / (0.19196+np.exp(0.2311*x_val)) for x_val in x] b = 900000*np.exp(0.2311*x) # P(t)=900000e^{(0.2311x)} plt.axhline(y=1072764, color='r', linestyle='--', label = 'P=1,072,764') plt.ticklabel_format(style='plain') plt.axis([-20, 20, 0, 1400000]) # 放大视图 plt.plot(x, a, 'darkblue', label = '$P_0=900,000$') # 绘制Logistic曲线 plt.plot(x, b, 'turquoise', label = 'Exponential Growth') # 绘制指数曲线 plt.xlabel("x") plt.ylabel("y") plt.legend(loc='lower right') # plt.savefig('plots', dpi=300, bbox_inches='tight') plt.show()
排查提示
- 修正指数函数的增长率参数:
Logistic微分方程的形式是$\frac{dP}{dt}=rP(1-\frac{P}{K})$,初始时刻的实际增长率是$r(1-\frac{P_0}{K})$,而非直接使用$r=0.2311$。计算得正确增长率约为$0.2311\times(1-\frac{900000}{1072764})\approx0.0372$,将指数曲线代码改为b = 900000*np.exp(0.0372*x)后,曲线增长速率会与示例图匹配。 - 验证初始点的斜率对齐:
当前代码中两条曲线在$x=0$处取值一致,但斜率差异极大——你的指数曲线增长过快,这是视觉上“偏移”的核心原因。修正增长率后,初始斜率会与Logistic曲线在$x=0$处的切线斜率一致,曲线走势会更贴合示例图。 - 确认时间轴定义:
检查示例图的x轴是否对应具体年份(如$t=0$对应某一基准年),确保你的$x$变量时间原点与示例图一致,避免因时间轴错位导致的视觉偏移。
内容的提问来源于stack exchange,提问作者Jessie
相关产品推荐
相关产品推荐

