各位大佬,新手计算出现这个问题不知道怎么解决,谢谢大佬
mathematica吧
全部回复
仅看楼主
level 2
吾乃大神L 楼主
代码是
Clear["Global`*"]
m := 1.320;
\[Sigma] := 0.200;
\[Alpha]s := 0.35;
\[Mu]R := m/4;
\[Delta] := 10^-10;
V[r_] := -4/3*\[Alpha]s/r + \[Sigma]*r;
Veff[r_] := 2*\[Mu]R*V[r];
SolveRadialEq[\[CurlyEpsilon]_] :=
NDSolve[{u''[r] == (Veff[r] - \[CurlyEpsilon]^2/4 + m^2) *u[r],
u[0] == \[Delta], u'[0] == 1}, u, {r, 0, 20}];
CheckBoundaryCondition[sol_, \[CurlyEpsilon]_] :=
Module[{uSol, value}, uSol := u[r] /. First[sol]; value := uSol[20];
value];
FindEnergyLevel[l_, \[CurlyEpsilon]Min_, \[CurlyEpsilon]Max_,
tolerance_] :=
Module[{\[CurlyEpsilon]Mid, sol, check},
While[\[CurlyEpsilon]Max - \[CurlyEpsilon]Min >
tolerance, \[CurlyEpsilon]Mid := (\[CurlyEpsilon]Min + \
\[CurlyEpsilon]Max)/2; sol := SolveRadialEq[l, \[CurlyEpsilon]Mid];
check := CheckBoundaryCondition[sol, \[CurlyEpsilon]Mid];
If[check >
0, \[CurlyEpsilon]Max = \[CurlyEpsilon]Mid, \[CurlyEpsilon]Min \
= \[CurlyEpsilon]Mid];
];
\[CurlyEpsilon]Mid];
\[CurlyEpsilon]Ground = FindEnergyLevel[0, -1, 1, 10^-6]
2024年11月26日 02点11分 1
level 8
你的SolveRadialEq在定义里只接受一个变量,在下面的Module里为什么接受了两个变量呢?
2024年11月26日 06点11分 3
大佬,定义两个也是一样的错误我才改成一个的
2024年11月26日 06点11分
@吾乃大神L 这种情况下你的Solveradialeq[epsilon]是空定义。我把你定义里的l去掉了(它根本没有出现在你的定义内容里),虽然仍然会报错,但是报的是NDSolve的计算问题。
2024年11月26日 06点11分
1