求助mathematica程序问题,那个flux代表了什么?module那块是做什么用的?
求助mathematica程序问题,那个flux代表了什么?module那块是做什么用的?
Clear["Global`*"]
tu :=
E^(I \[CurlyPhi]) v1^2 ((0.` + 0.` I) +
v0 ((0.` + 16.` I) e^3 +
e^2 ((0.` - 24.` I) \[CurlyEpsilon]l - (0.` +
24.` I) \[CurlyEpsilon]u) + \[CurlyEpsilon]l ((0.` -
8.` I) \[CurlyEpsilon]l - (0.` +
8.` I) \[CurlyEpsilon]u) \[CurlyEpsilon]u + ((0.` +
0.5832` I) \[CurlyEpsilon]l + (0.` +
0.5832` I) \[CurlyEpsilon]u) \[CurlyPhi]^2 +
e ((0.` + 8.` I) \[CurlyEpsilon]l^2 + (0.` +
32.` I) \[CurlyEpsilon]l \[CurlyEpsilon]u + (0.` +
8.` I) \[CurlyEpsilon]u^2 - (0.` +
1.1664` I) \[CurlyPhi]^2)) Cos[\[CurlyPhi]/
2] Sin[\[Theta]])
Tu[en_,\[Phi]n_] := Module[{},
e := en;
\[CurlyPhi] := 2*Pi*\[Phi]n/4;
\[Theta] := ArcCos[- (((e - \[CurlyEpsilon]0)/v0)/2.0)];
t1 := tu;
Return[(t1)]
]
flux := .0
e := 0.
\[CurlyEpsilon]0 = 0.0
v0 = 1
\[CurlyEpsilon]u = 0.3
\[CurlyEpsilon]l = 0.3
v1 = 0.07
t1u[en_,\[Phi]n_] := Abs[Tu[en,\[Phi]n]]^2;
Plot[(Abs[Tu[e,flux]]^2),{e,-2,2},
PlotRange -> {{-2,2.},{0,1.1}},Axes -> False,Frame -> True,
FrameLabel -> {"\[CapitalPhi]/\[CapitalPhi]o","Tu"},
BaseStyle -> {"Times New Roman",14},
PlotStyle -> {AbsoluteThickness[2.8]}]
……这个代码很有可能是机械移植自其他的语言,这个Module用的可谓毫无意义.原本在{}写上变量名的话,是可以让里面的变量局部化的,可是它留空了……对于那段完全可以剃成这样:
Tu[en_, \[Phi]n_] := (e := en;\[CurlyPhi] := 2*Pi*\[Phi]n/4;\[Theta] := ArcCos[-(((e - \[CurlyEpsilon]0)/v0)/2.0)];t1 := tu;t1)
当然其实还可以更简单,我懒得想了.
flux := .0嘛,自然就是flux为0咯,这种奇怪的写法显然也是移植的痕迹,在这里改成flux = 0也毫无问题.太感谢您了!还有请问Plot[(Abs[Tu[e, flux]]^2)这里面的flux就是作为常数么?如果我想改变flux的值,那就在之前那个奇葩的地方把flux=其他的数就可以了?如果我要是想画出来在某个flux的定值的情况下自变量为e,因变量为t1u,那么大概的方向是要如何改?没错。没错。你把Plot[Abs[Tu[e, flux]]^2)……改成Plot[t1u[e, flux]……就行了。