You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

课程作业:semilogy绘图结果不符问题排查求助

排查e级数误差semilogy绘图偏差问题

嘿,你的数值计算功能正常但绘图跑偏,这种情况十有八九是绘图环节的细节没处理对。结合semilogy的特性和我遇到过的同类坑,给你列几个最可能的原因:

  • 误差计算的定义出错
    绝对误差的正确定义是|计算得到的e值 - math.e|,相对误差是绝对误差 / math.e。要是你搞反了计算值和真实值的顺序,或者忘记加绝对值,semilogy的对数轴会直接跳过负数(因为对数不支持负数),或者显示出完全不符合预期的趋势。赶紧检查下代码里误差计算的行,比如是不是写成了math.e - calculated_e但没套绝对值?

  • semilogy的参数或数据维度不对
    semilogy要求x轴和y轴的数据长度必须一致,比如x轴是你计算级数的项数(比如从1到N的列表),y轴是对应每一项的误差值。要是你不小心把x轴换成了计算出来的e值,或者把绝对误差和相对误差的数组搞混了,图肯定乱。另外,同时画两条曲线的时候,要确保分别调用semilogy:

    n = np.arange(1, max_terms+1)  # 项数数组
    plt.semilogy(n, abs_errors, 'o-', label='Absolute Error')
    plt.semilogy(n, rel_errors, 's--', label='Relative Error')
    plt.legend()
    
  • 浮点精度或终止条件的间接影响
    虽然你说数值计算正常,但如果级数求和的终止条件设得太松(比如误差还没收敛就停了),或者累加时出现了浮点溢出,误差数据本身可能有异常值(比如突然跳变的大误差),semilogy的对数轴会把这些异常值放大,导致整体趋势看起来不对。可以先打印前几个和最后几个误差值,看看是不是有明显异常。

  • 绘图时的轴范围或画布问题
    要是之前画过别的图没清空画布(比如没调用plt.clf()),或者semilogy自动设置的y轴范围不对(比如把很小的误差压缩到看不见),可以手动设置轴范围来验证:

    plt.ylim(1e-16, 1)  # 根据你的实际误差范围调整上下限
    

另外,你贴的代码片段没写完(比如Exp_Li...这部分),如果这个函数是负责级数计算的,里面的逻辑(比如累加顺序、项的计算方式)也可能间接影响误差数据。如果能贴出完整的误差计算和绘图代码,定位会更精准。

内容的提问来源于stack exchange,提问作者Dante Alighieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:17