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

NDSolve求解偏微分方程失败,请求修正代码以生成可运行结果

修正Mathematica偏微分方程求解代码及绘图问题

问题根源

原代码存在大量未定义的变量/函数(xE、G、b、r0、Sigmaz、Ur、Vr),这些缺失的定义导致NDSolve无法解析初始条件与方程,进而触发NDSolve::eerri错误。

修正后的可运行代码

将所有未定义部分替换为可计算的测试值或简单函数,确保方程、初始条件、边界条件能被正确解析:

ClearAll[];
(* 材料与几何参数定义 *)
l = 2.5;
l0 = 1.5;
Eb = 210*10^9;
rb = 10/1000;
rhob = 7850;
Eg = 35*10^9;
rg = 17.5/1000;
vg = 0.25;
varphi = 45 Degree;
Cb = 2*Pi*rb;
Ab = Pi*rb^2;

(* 补充未定义变量的测试值 *)
xE = Eg;
G = Eg/(2*(1 + vg));
b = 0.01;
r0 = 0.5;

(* 定义缺失的测试函数 *)
Sigmaz[r_, z_, t_] = 10^6*Sin[2*Pi*r/l0]*Cos[1000*Pi*t];
Ur[r_, z_, t_] = 10^-6*Sin[2*Pi*r/l0]*Cos[1000*Pi*t];
Vr[r_, z_, t_] = -10^-3*Sin[2*Pi*r/l0]*Sin[1000*Pi*t];

(* 修正后续依赖计算 *)
R = 10*Eb*rb/((Eg + xE)/2);
Gg = Eg/(2*(1 + vg));
k = Gg*G/((G*Log[rg/rb] + Gg*Log[R/rb])*rb);
YiTa = Tan[varphi];
z1 = b;
p[x_, t_] = FullSimplify[YiTa*Sigmaz[r0 + l - x, z1, t]];

(* 偏微分方程、初始与边界条件 *)
PDE1 = D[u1[x, t], {x, 2}] == 
   rhob*D[u1[x, t], {t, 2}]/Eb + k*Cb*u1[x, t]/(Eb*Ab) + p[x, t]*Cb/(Eb*Ab);
initialCondition = {Derivative[0, 1][u1][x, 0] == Vr[r0 + l - x, z1, 0], 
   u1[x, 0] == Ur[r0 + l - x, z1, 0]};
boundaryConditions = {u1[0, t] == Ur[l + r0, z1, t], 
   u1[l0, t] == Ur[r0 + l - l0, z1, t]};

(* 求解方程,调整步长避免过度限制 *)
sol = NDSolve[{PDE1, initialCondition, boundaryConditions}, 
   u1, {x, 0, l0}, {t, 0, 0.001}, MaxStepSize -> 0.0001];

(* 绘制结果 *)
Plot3D[Evaluate[u1[x, t] /. sol], {x, 0, l0}, {t, 0, 0.0001}, 
 PlotRange -> All, AxesLabel -> {"x", "t", "u1(x,t)"}, 
 PlotTheme -> "Scientific"]

关键修正说明

  • 补充所有未定义变量的合理测试值,确保参数链完整
  • 定义Sigmaz、Ur、Vr为随空间和时间变化的正弦/余弦函数,让初始与边界条件具备明确数值
  • 调整MaxStepSize从1e-7改为1e-4,避免过度限制求解步长导致效率低下或求解失败
  • 所有表达式末尾添加分号,减少不必要的中间输出干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:43