在mathematica中有下标的物理常量

时间:2013-07-31 23:21:38

标签: wolfram-mathematica physics

我有点问题。我已经搜索了很长一段时间但没有找到答案(帮助,我是初学者)。 我想在mathematica 9中制作我自己的笔记本进行物理计算。笔记本应该易于使用,并且应该能够快速得到概述(因为我不想每次都使用数量)。我想像教科书一样显示我的方程式。我的问题是我需要ElectronMass的下标。他们需要成为一个符号,因为我想保护这些价值观。但它不起作用。我可以改变m并获得Electronmass的不同值。这是我的笔记本:

Needs["Notation`"];
Symbolize[ParsedBoxWrapper[SubscriptBox["_", "_"]]]

Subscript[m, e] = Quantity["ElectronMass"];
Subscript[m, p] = Quantity["ProtonMass"];
Subscript[m, n] = Quantity["NeutronMass"];
Protect[Subscript[m, el], Subscript[m, p], Subscript[m, n]];

到目前为止一切都很好......但随后就会发生......

In[19]:= m = 5

Out[19]= 5

In[20]:= Subscript[m, e ]

Out[20]= Subscript[5, e]
相反,我想要

In[20]:= Subscript[m, e ]

Out[20]= Subscript[m, e]

只是处理下标[m,e]独立于任何与“m”或“e”有关的内容 谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

简单的解决方法就是保护您想要使用的所有符号,而不是

Protect[Subscript[m, el], Subscript[m, p], Subscript[m, n]];

你需要写

Protect[m,el,n];

这样一旦设置了值

Subscript[m, n] = 2;
Subscript[m, el] = 4;

以后在评估它们时,保证返回正确的值。作为快速说明,您可能希望重新定义下标以获得某些动机,例如

Subscript[a_, b_] := a[b]

答案 1 :(得分:1)

除了Artur的方法,你可以在HoldAll上设置Subscript,这将阻止评估这些符号。这不应该轻易做到,因为它会影响 Subscript的所有使用,但如果您希望这种行为是通用的,那么它可能正是您想要的。

SetAttributes[Subscript, HoldAll]

m = 5; e = 3;

Subscript[m, e]
(* Out= *) Quantity["ElectronMass"]

专用StackExchange站点:
enter image description here

答案 2 :(得分:0)

除了优秀的 Hold(你的呼吸) Protect(你宝贵的变量)到目前为止你得到的答案,我宁愿建议你停下来思考一下

这是MMA的限制/怪癖,还是纸张/笔记本的逻辑/风格限制?

毕竟:你会竭尽全力用下标来定义m,以表明特定的质量。那你为什么要在没有子标题的情况下定义一个数量(也许是常数)?

是一团吗?然后给它一个下标来表示它是什么样的质量。

不是群众吗?然后称之为别的东西。如果你真的没有创造力,请使用更长 - 更具说明性 - 变量的名称,或 mm

一般情况下,不要将读者与具有广泛不同含义的类似符号混淆。

另外,我不会输入

Symbolize[ParsedBoxWrapper[SubscriptBox["_", "_"]]]

因为这太笼统了。 我会输入

Symbolize[ParsedBoxWrapper[SubscriptBox["m", "_"]]]

使用漂亮的下标来限制物理对象的类型。 当然,您可以随时添加

Symbolize[ParsedBoxWrapper[SubscriptBox["q", "_"]]]

如果您需要描述其他下标数量(比如收费)。,