gpt4 book ai didi

wolfram-mathematica - Unusual Solve[] 行为延迟

转载 作者:行者123 更新时间:2023-12-01 09:36:55 26 4
gpt4 key购买 nike

对于一个涉及从光谱数据计算键长的项目,我使用 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 没有什么特别之处,任何 2 个数字都有效。就像这个 Solve[] 块有延迟效果...

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

最佳答案

问题是你的 del定义在其他一些之后,其中 del存在。因此,在这些执行时,del仍然有它的旧值(value)。您有 2 个选择:任一地点 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]

关于wolfram-mathematica - Unusual Solve[] 行为延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5955275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com