Внезапность номер 1.
Как вы думаете, что вы увидите, если сперва сохраните в переменную случайное число (скажем, от 0 до 10), а затем несколько раз выведите его значение?
Логично было бы предположить, что все операции вывода продемонстрируют одно и то же значение. Но нет: вероятно, в рамках концепции
ленивых вычислений и для поддержки возможности символьный упрощений, переменная будет содержать вовсе не константу, а именно выражение. Таким образом, каждая операция вывода будет печатать новое случайное число.
Я слегка прифигел, когда понял
почему же не работает стандартный приём по созданию случайного сигнала с заданной частотой.
Затем я прифигел, пытаясь понять:
что можно сэкономить не вызвав один раз ГПСЧ, и с чем можно сократить или взаимно уничтожить
"случайное число".
Далее я впал в уныние из-за отсутствия возможности чётко указать при присваивании, что выражение справа надо вычислить сейчас.
Но окончательно я впал в истерику, когда вычисление
коэффициента корреляции Пирсона для двух не самых больших выборок так и не завершилось за 59 минут (!) на i5-2500 (3.3ГГц) с 8Гб ОЗУ.
(Вместо того, чтобы рассчитать нужные коэффициенты и использовать их, SMathStudio тянуло их в символьном виде кучу итераций, при этом сложность нарастала как снежный ком).
Начал шариться по форуму и нашёл-таки:
клик (автор оперирует именами из своей расчётки)
Если в расчете заменить значение y1 на любое положительное число не равное 1, то программа просто вылетает. Воспроизведение ошибки проверено на win/lin версиях 0.93, 0.94, 0.94.хх, 0.95. Если убрать принудителную символьную оптимизацию f(x,t) через eval(), то цикл for зацикливается. При выставлении численной оптимизации f(x,t) по выпадающему меню на правую кнопку мыши, так же наблюдается бесконечное зацикливание for.
|
Формулировки (особенно из-за того, что я не стал качать пример) путаны, но ситуация похожа (причём завис мой пример, когда я стал активно тестить режимы из контекстного меню*, намертво - вместе с ОС; живым остался только курсор).
* - опции эти нигде не продублированы более (я не нашёл).
Из хелпа:
eval("выражение") - Переводит выражение представленное аналитически в численный вид.
|
Суть страданий и избавления - см скриншот.
![Нажмите на изображение для увеличения
Название: eval.jpg
Просмотров: 1167
Размер: 7.3 Кб
ID: 17168](https://forum.boolean.name/attachment.php?s=ed53e86956bd43f1d699bffb52870e83&attachmentid=17168&thumb=1&d=1342028506)
теперь расчёт производился за 3 секунды. Теперь буду как одержимый юзать
eval для не символьных вычислений.