Значение на tmp$xxxx в изхода на Mathematica

Тъй като е проблематично да търсите в Google низове, които съдържат $ (знак за долар), не можах да намеря никакво обяснение за следния изход:

{Cos[tmp$132923 + \[Phi]], 
 Sin[tmp$132926 + \[Phi]], 
\[Phi]
}

Въпроса:

Какво означава tmp$xxxx?

Някакъв фон

В `book2.nb' дефинирах следната функция:

g[i_, j_] := {
  f1[i, t, f2[b, j], p][[1]],
  f1[i, t, f2[b, j], p][[2]],
  f3[i, t, p]
  }

Където f1,f2,f3 всички са дефинирани в друг бележник book1.nb, който е инициализиран и работи добре. Освен това f1 връща списък, а b е дефиниран и активен списък.

Сега, когато извикам g[1,1], получавам изход, подобен на цитирания по-горе - с този tmp$. Въпреки това, ако се опитам да начертая g, той работи перфектно (използвайки ParametricPlot3D[g[1, 1], {t, 0, 1}, {p, 0, 2 Pi}]). Ако обаче се опитам да дефинирам променлива

V= {
      f1[1, t, f2[b, 1], p][[1]],
      f1[1, t, f2[b, 1], p][[2]],
      f3[1, t, p]
      }

където замествам i,j с фиксирани стойности. След това V отново е с елемент tmp$, но този път НЕ се чертае...


person Dror    schedule 10.11.2011    source източник


Отговори (2)


Вашият код вероятно има вариант на този проблем:

f[x_] := Module[{t}, Cos[t]+Cos[x] ]

в който момент оценявайки това:

f[y]

дава това:

Cos[t$685] + Cos[y]

Често това означава, че има проблем с кода.

Или „t“ трябваше да бъде предадено като параметър на „f“:

f[x_,t_] := Module[{}, Cos[t]+Cos[x] ]

или 't' трябваше да се инициализира по някакъв начин:

f[x_] := Module[{t}, t=2x; Cos[t]+Cos[x] ]

Напълно добре е да използвате тези уникални променливи във вашия код, ако възнамерявате да го направите. Например, това е един от начините да напишете израз с много уникални променливи:

Plus @@ Table[Unique[x]^i, {i, 100}]
person Arnoud Buzing    schedule 10.11.2011

Най-вероятно виждате локализирани символи, които се получават чрез обхват като Module.

Ето един пример. Тъй като локализираният символ x се използва за дефиниране на глобалния символ y, временният символ x$152 избягва Module.

In[1]:= Module[{x}, y = x]; y

Out[2]= x$152

Има и други варианти на този процес. Да предположим, че задавате уникален контекст за клетката (Evaluation > Notebook's Default Context > Unique to Each Cell Group) и след това правите присвояване на изрично глобален символ:

Global`b = a

Сега в друга тетрадка:

In[1]:= b

Out[1]= Notebook$$33`a
person Mr.Wizard    schedule 10.11.2011
comment
+1, за бягства Module. Мразя, когато променливите сдъвкват задръжките си... - person rcollyer; 10.11.2011