Для проекта, который предполагал вычисление длин связей по спектроскопическим данным, я использовал Solve[]
, чтобы решить довольно простое уравнение для неизвестного. Я начал замечать "необычное" поведение, когда я изменил ввод. В частности, когда я изменил число и 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, любые 2 числа работают. Это похоже на Solve[]
блок с эффектом задержки ...
Я не уверен, является ли это причудой моего компьютера (MacBook Intel) или это что-то присущее Solve. Скажите, если вы, ребята, ведете себя так же, как я, когда запускаете этот код, и если да, у вас есть идея, почему это происходит? (Я попытался перезапустить Mathematica и запустить его снова, и он всегда ведет себя так).