数值积分
mathematica吧
全部回复
仅看楼主
level 5
dayday14 楼主
G = 6;
g = 4.8;
M[m_] := (1 + Sqrt[g/G]) m;
F1[m_, b_] :=
NIntegrate[
1/s^(3/2) (Exp[-s (b + Sqrt[k^2 + M[m]^2])^2] +
Exp[-s (b - Sqrt[k^2 + M[m]^2])^2]), {s, 1, Infinity}, {k, 0,
Infinity}]
F2[m_, b_] := 2*b*\[Mu]
F[m_, b_] :=
1/(2*Sqrt[\[Pi]])*F1[m, b] - F2[m, b]
locationMin = {0.1261, 0.04304};
location = {};
Do[
\[Mu] = i/100;
res = FindMinimum[{F[m, b], 0 < m < 1 && 0 < b < 1}, {m,
locationMin[[1]]}, {b, locationMin[[2]]}];
locationMin = {m, b} /. res[[2]];
AppendTo[location, locationMin];
Print[{N[\[Mu]], res}], {i, 0, 100}]
运行时总是提示积分有问题,但是去掉N又计算不出来,有谁知道要怎么改吗?谢谢!
2018年01月03日 08点01分 1
吧务
level 15
计算顺序的问题。把F1定义改成F1[m_?NumericQ, b_?NumericQ]就行了。记得F1要先清一遍。
2018年01月06日 08点01分 2
这个意思是m,b是数值就进行计算,不是就不进行?是吗?
2018年01月07日 03点01分
@dayday14 是的。你定义完之后可以试一下F1[mm,bb]之类的看看效果。
2018年02月03日 11点02分
1