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

Matplotlib多曲线绘制时G与t维度不匹配报错问题求解

问题解决方案

错误根因

  • 你当前代码中L和Lc各有9个元素,外层循环跑9次,每次内层循环往一维列表G里追加50个值,最终G总长度为9*50=450,和长度为50的t维度自然不匹配,触发第一个报错
  • 如果把plt.plot放在第二层循环内,全局的G会持续追加内容,第二次内层循环时G长度就变成100,和t的50长度不匹配,触发第二个报错
  • 额外注意:原代码的matplotlib导入错误,导入的是matplotlib主模块而非绘图用的pyplot子模块,即便维度匹配也会调用plot失败

修正代码(按需求绘制5组曲线)

import mpmath as mp
import numpy as np
import matplotlib.pyplot as plt # 修正matplotlib导入错误
import sympy

L=[0.04980905361573844, 0.0208207352451072, 0.012368753716465475, 0.009117292529338674, 0.007461219338976698, 0.006510364609693688, 0.005899506135250773, 0.005485130537183343, 0.0051898472561455]
Lc=[1.7509008762765992, 0.14986486457338544, 0.03453912303580302, 0.014622269851256788, 0.00831141421008418, 0.005660123321843252, 0.004287823173522503, 0.0034922189865254395, 0.0029879534061896186]
beta = 0.25
t=np.linspace(0.00000000000001,0.000001,50)

# 外层循环只跑5次,取前5组参数生成5条曲线
for i in range(5):
    j0 = L[i]
    j1 = Lc[i]
    def f(s):
        return s**(beta - 1)/(j0*s**beta + j1*sympy.gamma(beta + 1))
    # 每组参数单独初始化G,避免全局列表持续追加
    G = []
    for j in range(50):
        G.append(mp.invertlaplace(f, t[j], method = 'dehoog', dps = 10, degree = 50))
    # 单组计算完成后立即绘制,当前G长度为50和t完全匹配
    plt.plot(t, G, label=f'参数组{i+1}')

plt.legend()
plt.xlabel('t')
plt.ylabel('G')
plt.show()

核心修改点

  • 每组参数计算完成后单独绘图,每次绘图的G都是当前组生成的长度为50的列表,维度和t完全匹配
  • 限制外层循环仅执行5次,刚好输出5组曲线,符合需求
  • 新增图例和坐标轴标签,方便区分不同参数对应的曲线

内容的提问来源于stack exchange,提问作者Ali AlCapone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:18:01