Mathematica输出中“tmp $ xxxx”的含义

时间:2011-11-10 09:38:02

标签: wolfram-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$元素,但这次它没有绘制......

2 个答案:

答案 0 :(得分:9)

您最有可能看到通过范围界定产生的本地化符号,例如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

答案 1 :(得分:7)

您的代码可能有此问题的变体:

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}]