Dro*_*ror 7 wolfram-mathematica
由于谷歌字符串包含$(美元符号)是有问题的,我无法找到以下输出的任何解释:
{Cos[tmp$132923 + \[Phi]],
Sin[tmp$132926 + \[Phi]],
\[Phi]
}
Run Code Online (Sandbox Code Playgroud)
什么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]
}
Run Code Online (Sandbox Code Playgroud)
凡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]
}
Run Code Online (Sandbox Code Playgroud)
我i,j用固定值替换的地方.然后V是一个tmp$元素,但这次它没有绘制...
您很可能会看到通过范围界定产生的本地化符号,例如Module.
这是一个例子.由于本地化符号x用于定义全局符号,y因此临时符号会x$152转义Module.
In[1]:= Module[{x}, y = x]; y
Out[2]= x$152
Run Code Online (Sandbox Code Playgroud)
此过程还有其他变体.假设你设置一个唯一的上下文的电池(Evaluation> Notebook's Default Context> Unique to Each Cell Group),然后进行分配,以一个明确的全局符号:
Global`b = a
Run Code Online (Sandbox Code Playgroud)
现在在另一个笔记本:
In[1]:= b
Out[1]= Notebook$$33`a
Run Code Online (Sandbox Code Playgroud)
您的代码可能有此问题的变体:
f[x_] := Module[{t}, Cos[t]+Cos[x] ]
Run Code Online (Sandbox Code Playgroud)
在这一点评估这个:
f[y]
Run Code Online (Sandbox Code Playgroud)
给出这个:
Cos[t$685] + Cos[y]
Run Code Online (Sandbox Code Playgroud)
通常,这意味着代码存在问题.
要么't'要作为'f'的参数传入:
f[x_,t_] := Module[{}, Cos[t]+Cos[x] ]
Run Code Online (Sandbox Code Playgroud)
或't'需要以某种方式初始化:
f[x_] := Module[{t}, t=2x; Cos[t]+Cos[x] ]
Run Code Online (Sandbox Code Playgroud)
如果您打算这样做,在代码中使用这些唯一变量是完全可以的.例如,这是使用许多唯一变量编写表达式的一种方法:
Plus @@ Table[Unique[x]^i, {i, 100}]
Run Code Online (Sandbox Code Playgroud)