求助NDSolve求解PDEs问题
mathematica吧
全部回复
仅看楼主
level 2
Akahide 楼主
各位好,本人在用NDSolve求解PDEs时,将结果画图得到如图结果,一半没画出来,画出来的一半极为平坦。但程序没有任何报错,想请问各位有无办法排查。源码如下:
{Subscript[\[Gamma], S], Subscript[\[Gamma], L]} = {0, 0};
{Subscript[v, S], Subscript[v, L]} = {0.8, 0.1};
{Subscript[\[Omega], S], Subscript[\[Omega], L]} = {0.7, 0.3};
{Subscript[k, i], Subscript[k, L]} = {1.9, 1.68};
{Subscript[\[Beta], 1], Subscript[\[Beta], 2]} = {0.2, -0.04};
\[Alpha] = 1;
eqns = {\!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]\(a[x, t]\)\) +
Subscript[\[Gamma], S] a[x, t] - Subscript[v, S] \!\(
\*SubscriptBox[\(\[PartialD]\), \(x\)]\(a[x, t]\)\) + (I \[Alpha])/
Subscript[\[Omega], S] Exp[I Subscript[k, i] x] a[x, t] ==
Subscript[\[Beta], 1] e[x, t],
\!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]\(e[x, t]\)\) +
Subscript[\[Gamma], L] e[x, t] + Subscript[v, L] \!\(
\*SubscriptBox[\(\[PartialD]\), \(x\)]\(e[x, t]\)\) - (I \[Alpha])/
Subscript[\[Omega], L] Exp[-I Subscript[k, i] x] e[x, t] ==
Subscript[\[Beta], 2] a[x, t],
e[x, 0] == 0, e[0, t] == 0,
a[x, 0] == 0.01, a[0, t] == If[t == 0, 0.01, 0]};
sols = NDSolve[eqns, {e, a}, {x, 0, 50}, {t, 0, 2000},
PrecisionGoal -> 2];
plot1 = Plot3D[Abs[e[x, t] /. sols[[1]]], {x, 0, 50}, {t, 0, 2000},
PlotRange -> All, AxesLabel -> {"x", "t"},
PlotLabel ->
"Abs[\!\(\*SubscriptBox[\(e\), \(L\)]\)(x,t)],\[Alpha]=0"]
plot2 = Plot3D[Abs[a[x, t] /. sols[[1]]], {x, 0, 50}, {t, 0, 2000},
PlotRange -> All, AxesLabel -> {"x", "t"},
PlotLabel ->
"Abs[\!\(\*SubscriptBox[\(a\), \(S\)]\)(x,t)],\[Alpha]=0"]
Clear["Global`*"]
2024年04月29日 12点04分 1
吧务
level 15
看到纵轴那个10的83次方没……这种情况首先要仔细检查方程本身是不是列错了。(参数单位,方程本身,初始边界条件,一切的一切都要仔细检查。)
2024年05月04日 03点05分 3
好的,谢谢老哥!
2024年05月04日 06点05分
1