Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Antech  
#1 Оставлено : 13 августа 2014 г. 14:55:41(UTC)
Antech


Статус: Member

Группы: Registered
Зарегистрирован: 13.09.2010(UTC)
Сообщений: 28
Откуда: Solar System, Earth

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте. Давно использую SMath в рабочих проектах. Как-то раз у меня возникла проблема со скоростью работы блоков программирования в SMath и автор помог мне, исправив sm-файл. Никогда бы не догадался, что после блока, вычисляющего матрицу M, нужно написать M:=M Good. Теперь мне понадобилось сделать итерационное решение сравнительно простой задачи, связанной с распределением расходов среды по трубопроводам. Вначале решение получалось примерно за 5-7 секунд. Это нормально. После этого я уточнил модель (учел сопротивление поворотов), для чего понадобилось добавить несколько вложенных функций. В результате расчет занимает 40...50 секунд, хотя добавленные функции простые и не должны долго вычисляться (в них самих нет итераций). Расчет нужно делать много раз, поэтому хотелось бы побыстрее...

Smath-файлы не секретные, они основаны на открытой литературе, поэтому даю ссылки на файлы.
Начальный вариант: http://rghost.ru/57445918
Вариант, в котором присутствует проблема с длительным расчетом: http://rghost.ru/57445935
Ссылки действуют 30 дней.

Можно ли как-то ускорить расчет? Или так и должно быть? Спасибо за внимание.

Отредактировано пользователем 13 августа 2014 г. 15:16:08(UTC)  | Причина: Не указана

Offline Ber7  
#2 Оставлено : 15 августа 2014 г. 14:42:05(UTC)
Ber7


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 22.03.2010(UTC)
Сообщений: 223
Мужчина
Израиль
Откуда: Beer-Sheva

Сказал «Спасибо»: 173 раз
Поблагодарили: 255 раз в 133 постах
Ваш расчет подправил.Время расчета уменьшилось в два раза.
Вложение(я):
Распределение расходов.smz (124kb) загружен 53 раз(а).
Метод расчета рычажных механизмов :
http://www.exponenta.ru/...litskiy-ivanov/index.asp
thanks 1 пользователь поблагодарил Ber7 за этот пост.
Antech оставлено 20.08.2014(UTC)
Offline Antech  
#3 Оставлено : 20 августа 2014 г. 10:55:32(UTC)
Antech


Статус: Member

Группы: Registered
Зарегистрирован: 13.09.2010(UTC)
Сообщений: 28
Откуда: Solar System, Earth

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
Ber7
Спасибо! Начал экспериментировать и выяснил, что вынесение К1 и К2 из прог-модуля в виде постоянных на время расчета не повлияло. А вот A1_70 и A1_100 как отдельные функции - это очень влияет на время счета. Скрипт выполняет множество вычислений на каждой итерации, интересно, почему +/- одна формула изменяет время расчета в 2 раза? Там синус, но врядли так уж долго он считается...

Подскажите, а как Вы удаляете лишние строки в скрипте (блоке программирования) на SMath? Ну, "placeholders" в терминологии Mathcad. У меня новая версия SMath (04.08.2014) и del там не работает... Также интересно, можно ли вставлять новые строки в скрипт (кроме как выделить весь скрипт и добавить строки в конце). Кнопочка "]" добавляет новый уровень скрипта, а не строку...

Апдейт. Взял исходный файл, вставил A1_70(it) и A1_100(it) аналогично Вашему варианту. Время расчета особо не изменилось (минута+ на моем компе). В чем может быть причина? Нужно что-то еще исправить? Как я уже говорил, в Вашем варианте отдельные К1 и К2 пробовал убирать, это не повлияло на время счета.

Отредактировано пользователем 20 августа 2014 г. 11:55:04(UTC)  | Причина: update / syntax

Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.