由于包含$
(美元符号)的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$
元素,但这次它没有绘制......
答案 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}]