在一个计算光谱数据中的键长的项目中,我使用Solve[]
解决了一个相当简单的方程来求解未知数。当我更改输入时,我开始注意到“异常”的行为。具体来说,当我更改数字并使用Solve时,结果是之前的答案。然而,再次执行代码会得到正确的答案;就像有一个执行延迟一样。
以下是一个例子:
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
的值后,你是否评估了其他赋值以更新它们的值?Mathematica 不会自动为你执行这个操作。 - Sasha