2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Mathematica 10 - вызов модуля из цикла
Сообщение15.09.2014, 14:46 
Заслуженный участник


27/07/12
1405
САФУ Архангельск
Значит, есть у меня цепочка вычислений, выдающих график на котором эксперимент сравнивается с моделью. в модели есть 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]


но не тут то было! цикл работает, а ничего не выводиться. в чем причина?

 Профиль  
                  
 
 Re: Mathematica 10 - вызов модуля из цикла
Сообщение15.09.2014, 15:46 
Заслуженный участник


25/02/11
1797
Результат команды перед точкой с запятой не выводится. Вот так должно:
Код:
w := 200
While[w < 225, Print[gcd[w, 0.3]]; w = w + 10]

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group