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

Mathematica代码报错:Tag List受保护,求原因及修复方案

解决Mathematica中"Tag List is protected"错误及生成曲线图像方案

错误原因分析

  • 核心触发点:D是Mathematica的内置系统符号(用于求导操作),属于受保护的系统标识符,不能直接用作自定义变量名,这是引发"Tag List is protected"错误的根本原因。
  • 次要问题:DSolve返回的结果是列表包裹的解结构,直接使用S[t] /. Sol1会得到嵌套列表,后续Table处理时会导致绘图对象结构混乱,无法被Plot正确识别。

修复后的完整代码

-- 替换内置符号D为自定义变量名d0,避免系统冲突
Sol1 = DSolve[{S'[t] == d0 - Er - Es*S[t], S[0] == 1}, S[t], t]

-- 提取单解表达式并批量替换参数,避免嵌套列表问题
plots = Table[
  Evaluate[First[S[t] /. Sol1] /. {d0 -> d, Er -> er, Es -> es}], 
  {{d, er, es}, {{10, 5, 5}, {10, 4, 3}, {6, 4, 4}}}
]

Plot[plots, {t, 0, 10}, 
 PlotLegends -> {"d0 = 10, Er = 5, Es = 5", "d0 = 10, Er = 4, Es = 3", 
   "d0 = 6, Er = 4, Es = 4"}
]

修改说明

  1. 变量名替换:将原代码中的D改为d0,彻底避免与内置求导符号冲突。
  2. 解结构处理:用First[S[t] /. Sol1]提取DSolve返回的单解表达式(默认返回列表格式的解),确保后续生成的绘图表达式是扁平结构。
  3. 图例同步更新:调整图例中的变量名称,与代码中的自定义变量保持一致。

内容的提问来源于stack exchange,提问作者Abitatha Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:16:13