Значит, есть у меня цепочка вычислений, выдающих график на котором эксперимент сравнивается с моделью. в модели есть 2 подгоночных параметра, а считается график минут 5, поэтому решил циклом перебирать значения параметров в заданном диапазоне, а и посмотреть как веден себя сходимость с экспериментом.
загнал вычисления в модуль:
Код:
gcd[g0_, h0_] :=
Module[{q = g0, h = h0},
\[Epsilon] = q^2/(2 180.9 1830) 27.21;
\[Delta] = 8.1;
Efull[n_] := n*\[Epsilon] ;
U[n_] := h \[Delta] n^(2/3);
Stab[n_] := \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(\[Delta]\)]\(
\*FractionBox[
SqrtBox[\(2 \((n*\[Epsilon] - x + U[n])\)\)], \(8*
\*SuperscriptBox[\(3.14\), \(3/2\)]*
\*SuperscriptBox[\((
\*FractionBox[\(\[Epsilon]\), \(3\)])\), \(3/2\)]\)]*
\*SuperscriptBox[\(E\), \((
\*FractionBox[\(\(-3\)*\((n*\[Epsilon]\ -
x)\)\), \(\[Epsilon]\)])\)] \[DifferentialD]x\)\);
(*Найдем вероятность того,
что кластер получит энергию соотвествующую вылету из него A атомов*)
\
\[Omega]A[n_, A_] := \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(If[
n*\[Epsilon] - \((A)\)*\[Delta] - U[n] > 0, \((A)\)*\[Delta],
n*\[Epsilon] - U[n]]\), \(If[
n*\[Epsilon] - \((A + 1)\)*\[Delta] - U[n] >
0, \((A + 1)\)*\[Delta], n*\[Epsilon] - U[n]]\)]\(
\*FractionBox[
SqrtBox[\(2 \((n*\[Epsilon] - x + U[n])\)\)], \(8*
\*SuperscriptBox[\(3.14\), \(3/2\)]*
\*SuperscriptBox[\((
\*FractionBox[\(\[Epsilon]\), \(3\)])\), \(3/2\)]\)]*
\*SuperscriptBox[\(E\), \((
\*FractionBox[\(\(-3\)*\((n*\[Epsilon]\ -
x)\)\), \(\[Epsilon]\)])\)] \[DifferentialD]x\)\);
(*Найдем вероятность того,
что кластер после испарения лишнего станет остатком из О атомов*)
\[Omega]O[n_, O_] := \[Omega]A[n, n - O];
WWW[n_] := If[n > 1, Stab[n] + \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = n + 1\), \(30\)]\(\[Omega]O[i,
n]\)\), \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 0\), \(30\)]\(\[Omega]A[1,
i]\)\) + \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 2\), \(20\)]\(
\*UnderoverscriptBox[\(\[Sum]\), \(A\), \(20\)]A*\[Omega]A[i, A]\)\)];
YeldNotDis3 :=
ListLogLogPlot[ParallelTable[WWW[n]/WWW[5], {n, 1, 10}],
PlotStyle -> {Red, PointSize[0.02]}, AspectRatio -> 1,
PlotMarkers -> "\[FilledUpTriangle]", PlotRange -> {10^-3, 10^3},
PlotLegends -> {"Испарение в новой модели"}];
g4 := ListLogLogPlot[{{1, (1.25*10^5)/(1.7*10^4)}, {2, \
(1.6*10^5)/(1.7*10^4)}, {3, (1.1*10^5)/(1.7*10^4)}, {4, \
(1.15*10^5)/(1.7*10^4)}, {5, (1.7*10^4)/(1.7*10^4)}, {6, \
(1.14*10^4)/(1.7*10^4)}, {7, (1.8*10^3)/(1.7*10^4)}, {8, \
(1.08*10^3)/(1.7*10^4)}, {9, (1.6*10^2)/(1.7*10^4)}, {10, \
(1.15*10^2)/(1.7*10^4)}}, PlotStyle -> {Black, PointSize[0.01]},
PlotMarkers -> "\[FilledSquare]", PlotLegends -> {"Тантал"},
PlotRange -> {10^-3, 10^3}];
Show[g4, YeldNotDis3, FrameLabel -> {"size", "relative yield"},
Frame -> True]
]
и начал вызывать его циклом:
Код:
w := 200
While[w < 225, gcd[w, 0.3]; w = w + 10]
но не тут то было! цикл работает, а ничего не выводиться. в чем причина?