1 страниц (3 вхождений)
Медленно работают функции (программирование) - Сообщения
#1 Опубликовано: 13.08.2014 07:55:41
Здравствуйте. Давно использую SMath в рабочих проектах. Как-то раз у меня возникла проблема со скоростью работы блоков программирования в SMath и автор помог мне, исправив sm-файл. Никогда бы не догадался, что после блока, вычисляющего матрицу M, нужно написать M:=M
. Теперь мне понадобилось сделать итерационное решение сравнительно простой задачи, связанной с распределением расходов среды по трубопроводам. Вначале решение получалось примерно за 5-7 секунд. Это нормально. После этого я уточнил модель (учел сопротивление поворотов), для чего понадобилось добавить несколько вложенных функций. В результате расчет занимает 40...50 секунд, хотя добавленные функции простые и не должны долго вычисляться (в них самих нет итераций). Расчет нужно делать много раз, поэтому хотелось бы побыстрее...
Smath-файлы не секретные, они основаны на открытой литературе, поэтому даю ссылки на файлы.
Начальный вариант: http://rghost.ru/57445918
Вариант, в котором присутствует проблема с длительным расчетом: http://rghost.ru/57445935
Ссылки действуют 30 дней.
Можно ли как-то ускорить расчет? Или так и должно быть? Спасибо за внимание.

Smath-файлы не секретные, они основаны на открытой литературе, поэтому даю ссылки на файлы.
Начальный вариант: http://rghost.ru/57445918
Вариант, в котором присутствует проблема с длительным расчетом: http://rghost.ru/57445935
Ссылки действуют 30 дней.
Можно ли как-то ускорить расчет? Или так и должно быть? Спасибо за внимание.
#2 Опубликовано: 15.08.2014 07:42:05
Ваш расчет подправил.Время расчета уменьшилось в два раза.
Распределение расходов.smz (123 КиБ) скачан 60 раз(а).
Распределение расходов.smz (123 КиБ) скачан 60 раз(а).
Метод расчета рычажных механизмов :
http://www.exponenta.ru/educat/systemat/selitskiy-ivanov/index.asp
1 пользователям понравился этот пост
Antech 20.08.2014 03:49:00
#3 Опубликовано: 20.08.2014 03:55:32
Ber7
Спасибо! Начал экспериментировать и выяснил, что вынесение К1 и К2 из прог-модуля в виде постоянных на время расчета не повлияло. А вот A1_70 и A1_100 как отдельные функции - это очень влияет на время счета. Скрипт выполняет множество вычислений на каждой итерации, интересно, почему +/- одна формула изменяет время расчета в 2 раза? Там синус, но врядли так уж долго он считается...
Подскажите, а как Вы удаляете лишние строки в скрипте (блоке программирования) на SMath? Ну, "placeholders" в терминологии Mathcad. У меня новая версия SMath (04.08.2014) и del там не работает... Также интересно, можно ли вставлять новые строки в скрипт (кроме как выделить весь скрипт и добавить строки в конце). Кнопочка "]" добавляет новый уровень скрипта, а не строку...
Апдейт. Взял исходный файл, вставил A1_70(it) и A1_100(it) аналогично Вашему варианту. Время расчета особо не изменилось (минута+ на моем компе). В чем может быть причина? Нужно что-то еще исправить? Как я уже говорил, в Вашем варианте отдельные К1 и К2 пробовал убирать, это не повлияло на время счета.
Спасибо! Начал экспериментировать и выяснил, что вынесение К1 и К2 из прог-модуля в виде постоянных на время расчета не повлияло. А вот A1_70 и A1_100 как отдельные функции - это очень влияет на время счета. Скрипт выполняет множество вычислений на каждой итерации, интересно, почему +/- одна формула изменяет время расчета в 2 раза? Там синус, но врядли так уж долго он считается...
Подскажите, а как Вы удаляете лишние строки в скрипте (блоке программирования) на SMath? Ну, "placeholders" в терминологии Mathcad. У меня новая версия SMath (04.08.2014) и del там не работает... Также интересно, можно ли вставлять новые строки в скрипт (кроме как выделить весь скрипт и добавить строки в конце). Кнопочка "]" добавляет новый уровень скрипта, а не строку...
Апдейт. Взял исходный файл, вставил A1_70(it) и A1_100(it) аналогично Вашему варианту. Время расчета особо не изменилось (минута+ на моем компе). В чем может быть причина? Нужно что-то еще исправить? Как я уже говорил, в Вашем варианте отдельные К1 и К2 пробовал убирать, это не повлияло на время счета.
1 страниц (3 вхождений)
-
Новые сообщения
-
Нет новых сообщений