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
{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`*"]
