Wolfram mathematica 异常行为延迟

Wolfram mathematica 异常行为延迟,wolfram-mathematica,Wolfram Mathematica,对于一个涉及从光谱数据计算键长的项目,我使用Solve[]来解一个相当简单的未知方程。当我改变输入时,我开始注意到“不寻常”的行为。具体来说,当我更改一个数字并解出d时,结果就是前面的答案。但是,再次执行代码会给出正确的答案;就好像有一次执行的延迟。 下面是一个例子: B = (11.09 + del)*2.998*10^10; c = h*1000*n*10^20/(8 \[Pi]^2); h = 6.62618*10^-34; n = 6.02204*10^23; del = 0;

对于一个涉及从光谱数据计算键长的项目,我使用
Solve[]
来解一个相当简单的未知方程。当我改变输入时,我开始注意到“不寻常”的行为。具体来说,当我更改一个数字并解出d时,结果就是前面的答案。但是,再次执行代码会给出正确的答案;就好像有一次执行的延迟。 下面是一个例子:

B = (11.09 + del)*2.998*10^10;

c = h*1000*n*10^20/(8 \[Pi]^2);

h = 6.62618*10^-34;

n = 6.02204*10^23;

del = 0;

Solve[c/B == 0.97959253 R^2, R]
执行给予

{{R -> -1.24567}, {R -> 1.24567}}
然而,当我在上面的代码块中将
del=0
更改为
del=10
时,我在执行时得到了相同的答案!当我第二次执行块时,我得到了正确的答案:

{{R -> -0.903299}, {R -> 0.903299}}
然后,将
del=10
更改回
del=0
,并执行以下操作:

{{R -> -0.903299}, {R -> 0.903299}}
正如您所想象的,第二次执行块会给出正确的答案

{{R -> -1.24567}, {R -> 1.24567}}
0和10没有什么特别的,任何两个数字都可以。就像这个
Solve[]
块有延迟效应


我不确定这是我的电脑(MacBook Intel)的一个怪癖,还是Solve的固有特性。告诉我,你们在运行这段代码时是否得到了与我相同的行为,如果是,你们知道为什么会发生这种情况吗?(我已尝试重新启动Mathematica并再次运行它,但它总是以这种方式运行)。

问题在于,您的
del
定义位于存在
del
的其他定义之后。因此,在执行这些操作时,
del
仍有其旧值。您有两种选择:将
del
作业放在顶部:

del = 0;
B = (11.09 + del)*2.998*10^10;
c = h*1000*n*10^20/(8 Pi^2);
h = 6.62618*10^-34;
n = 6.02204*10^23;
Solve[c/B == 0.97959253 R^2, R]
或使用
SetDelayed
:=
)进行分配:

B := (11.09 + del)*2.998*10^10;
c := h*1000*n*10^20/(8 Pi^2);
h = 6.62618*10^-34;
n = 6.02204*10^23;
del = 0;
Solve[c/B == 0.97959253 R^2, R]

我认为解决PJR问题的最简单方法就是增加

Clear["Global`*"]  

别忘了密码。然后,
del
的更改将没有机会重新定义
B
^_^

只是确定事情是显而易见的。更改
del
的值后,您是否评估其他分配以更新其值?Mathematica不会自动为您执行此操作。你好,PJR,欢迎来到StackOverflow。看看你是否对这个网站有疑问。请记住要有好的答案。是的,我几分钟前在看它的时候才发现了这一点!哎呀,现在感觉有点傻。。。谢谢你,莱昂尼德。既然这篇文章有点没用,我有什么办法可以删除它吗?@PJR,如果你真的想删除这篇文章,请点击问题底部的“标志”一词。选择“其他”,并向主持人解释您希望删除此内容。请注意,他们可能不会听从你的意愿。如前所述,我的观点是它对其他人有用,Leonid花时间回答了这个问题,所以它应该保留下来。