Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Россия навсегда! Вячеслав Мезенцев
2 пользователей поблагодарили уни за этот пост.
Статус: Advanced Member
Группы: Developers, Registered Зарегистрирован: 28.08.2009(UTC) Сообщений: 127
Сказал(а) «Спасибо»: 19 раз Поблагодарили: 4 раз в 4 постах
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Народу нравится
Пришлось покумекать немного. Какая-то проблема с augment():
так работает
а вот так не работает:
По-моему, это называется нереентерабельность
Функции DOS не могли использовать сами себя, т.к. использовали при передаче параметров не стек, а регистры процессора.
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Желающие разобраться в алгоритме могут доделать Ковёр Серпинского. Мне стало лень, слишком долго считает.
Документ:
Ковёр Серпинского Россия навсегда! Вячеслав Мезенцев
1 пользователь поблагодарил уни за этот пост.
genf оставлено 25.01.2014(UTC)
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 640 раз Поблагодарили: 262 раз в 102 постах
Замечательный тест программы, спасибо! Разберусь в чём причина медленных расчётов в данном случае - думаю, смогу ускорить. Кстати, в треугольнике Серпинского если в контекстном меню включить численную оптимизацию (ну или использовать eval(..), что, по сути, аналогично) для определения S (S:=Sp(n)), то производительность вырастет почти в два раза.
уни написал: Пришлось покумекать немного. Какая-то проблема с augment()
Это та же беда, что и со стеком: функция отказывается принимать одновременно скаляр с вектором в аргументах...
Ещё раз спасибо!
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
smath написал: уни написал: Какая-то проблема с augment()
Это та же беда, что и со стеком: функция отказывается принимать одновременно скаляр с вектором в аргументах...
Там оба аргумента векторы, точнее даже матрицы. Я привёл не тот пример.
Это работает:
T(x)←line(a←augment(x+el(x;1);x+el(x;2));augment(x;a);2;1) А это нет:
T(x)←augment(x;augment(x+el(x;1);x+el(x;2))) Причём, без определения функции это считается:
Код: augment(v; augment(v+el(v;1);v+el(v;2)))
Отредактировано пользователем 20 октября 2010 г. 6:56:48(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Россия навсегда! Вячеслав Мезенцев
1 пользователь поблагодарил уни за этот пост.
genf оставлено 25.01.2014(UTC)
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Откуда: Волгоград
Сказал «Спасибо»: 126 раз Поблагодарили: 36 раз в 22 постах
Предлагаю использовать "Ковёр Серпинского" в тесте производительности версий
з.ы. на моей машине считался 8мин. 33 сек.
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 640 раз Поблагодарили: 262 раз в 102 постах
Работаю над ускорением вычислений и выяснил, что в данных примерах основное время вычисления программа тратит на получение элементов матрицы
S (т.к. матрица очень большая, а в общем случае получить элемент матрицы можно только разобрав её полностью, из-за чего и начинаются тормоза). Из этого, кстати, следует, что если минимизировать количество обращений к элементам матрицы, то и скорость вычислений существенно возрастёт (это справедливо до и после оптимизации в коде), а в цикле G(x) кол-во таких обращений можно уменьшить с шести до двух.
Делюсь промежуточными результатами оптимизации кода (см. время вычислений внизу):
Что бы получить похожие результаты достаточно распаковать
SpecialFunctions.1_2_3948.Plugin.Bin.zip плагин и заменить им предыдущую версию из папки plugins в установочной директории SMath Studio. Оптимизированные версии файлов:
TreugolnikSerpinskogo.mod2.sm ,
KoverSerpinskogo.mod2.sm .
P.S.: И это не предел. Не всё удалось вынести в плагин - некоторой оптимизации подверглось и ядро, т.ч. в новой версии SMath Studio процесс будет идти ещё быстрее.
С уважением, Андрей Ивашов.
Отредактировано пользователем 23 октября 2010 г. 22:40:19(UTC)
| Причина: Не указана
3 пользователей поблагодарили smath за этот пост.
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Откуда: Волгоград
Сказал «Спасибо»: 126 раз Поблагодарили: 36 раз в 22 постах
mikka написал: Предлагаю использовать "Ковёр Серпинского" в тесте производительности версий
з.ы. на моей машине считался 8мин. 33 сек.
В версии 0.91 на той же машине 2 мин 21 сек!
Прогресс на лицо или на лице
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Россия навсегда! Вячеслав Мезенцев
4 пользователей поблагодарили уни за этот пост.
Ber7 оставлено 18.04.2012(UTC),
mikka оставлено 18.04.2012(UTC),
kmihaylovich оставлено 19.04.2012(UTC),
genf оставлено 25.01.2014(UTC)
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Дерево Пифагора Документ:
Pythagoras Tree.sm Примечание. Очень долго считает. При ограничении размера конечной ветки до 0,1 считает около 1 минуты у меня.
Россия навсегда! Вячеслав Мезенцев
1 пользователь поблагодарил уни за этот пост.
genf оставлено 25.01.2014(UTC)
Быстрый переход
Форум проекта SMath
SMath Studio
- Скачать SMath Studio
--- Архив
--- Ночные сборки
- Примеры использования
- Вопросы по использованию
- Предложения
- Ошибки
Математика
- Документы
- Алгоритмы
- Математические задачи
Общение
- О проекте
- Общение
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.