Я написал простенькую библиотеку пользовательских функций для mathcad, позволяющих отслеживать значение переменной в цикле программы, и в отличии от
trace() наблюдать динамику изменения визуально. Другая существенная деталь - можно остановить выполнение программы, если видно, что алгоритм пошел "не туда", не идет оптимизация, или напротив, оптимум уже достигнут. Для быстрых задач конечно можно получить массив значений, достигнутых алгоритмом оптимизации уже после выхода из программы, но для таких алгоритмов, которые считаются по несколько часов приходится ждать до конца, чтобы узнать результат. Используя trace() можно увидеть, что программа выполняется не так, как хотелось бы, но можно только прервать вычисление, не получив тех значений параметров, которые подобрал алгоритм. Ведь в маткаде при прирывании программа не возвращает вообще ничего!
Вот это я и постарался исправить. В matlab таких проблем не могло бы возникнуть, но есть же еще фанаты mathcad`а :)...
Прямые ссылки на закачку:
Сама библиотека с парой примеровИсходникиПрошу потестить. Я не очень силен в C++, поэтому могут быть какие-нибудь утечки памяти и т.п. Но у меня пока что всё работает и удовлетворяет моим требованиям.
Протестировано на mathcad 15. Начал я ее писать еще для 14-го, и заметил, что в 15-ом ничего не изменилось относительно поддержки пользовательских функций, поэтому, думаю, на 14-ом тоже пойдёт.
-- Чт июл 29, 2010 22:29:57 --Кстати не знаю, имею ли я право выкладывать такую библиотеку, ведь она скомпилирована с использованием
статической библиотеки Mathcad 1#\userefi\microsft\lib\mcaduser.lib, значит включает в себя весь её проприетарный код...