LINUX.ORG.RU

Посоветуйте числодробилку

 , ,


0

3

ЛОР, привет!

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

Нужно выбрать инструмент и более-менее освоить его.

Склоняюсь использовать python+numpy, чтобы интегрировать это в TeX исходники, может даже какой-нибудь CI/CD сделать. На питоне есть опыт в наколенных поделках. Еще вариант - Scilab (тоже был мимолетный опыт). Дальше идут всякие Octave и прочие штуки, о которых я только слышал.

Поделитесь, пожалуйста, своим опытом. Какие инструменты сейчас наиболее актуальны, удобны? Как сделать быстро/хорошо?

★★★
Ответ на: комментарий от post-factum

Да, желательно с краткими комментариями по достоинствам и недостаткам, сравнению вариантов.

Нагуглить ключевые слова я могу и сам, про Julia слышал.

aquadon ★★★ ()
Ответ на: комментарий от post-factum

Опять ты выходишь на связь (с).

ОП, не слушай этих жулиа-евангелистов. Берёшь numpy, если особо времени нет, c/fortran, если его чуть больше. Тут кто-то тестировал умножение матриц с помощью numpy и С год-два назад, даже с минимальными оптимизациями С вышел медленнее. Хорошая реализация blas тоже способствует этому делу. Если тебе нужно интегрировать, то в gsl есть пачка готовых функций.

Про тех я тебе скажу одно: я всё делаю в гнуплоте, потом просто вывожу в eps, проблем не было

Как сделать быстро/хорошо?

У новичков такого не бывает.

Как вариант, можешь попробовать Mathematica, но там хватает своих нюансов.

ZERG ★★★★ ()
Ответ на: комментарий от ZERG

fortran

И эти люди запрещают мне ковыряться в носу. Я даже Аду не предлагал!

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

Господи, повылазят со своим новоделом типа жулия или раста, ничего не работает, документации нет! Посмотри, сколько примеров на фортране написано, тут вон второе издание computer simulation of liquids вышло 30 лет спустя, так там примеры на фортране! А ведь это настольная книга!

ZERG ★★★★ ()
Ответ на: комментарий от post-factum

Ну ты не путай тёплое с мягким, примерами из таких книг можно пользоваться, а вот библия советует заводить рабов, а это уже неактуально.

ZERG ★★★★ ()

мне Scilab нравился больше чем Octave , но он что-то часто крашился это как-то выбесило и перешёл на Octave .

lmx2315 ()
Ответ на: комментарий от ZERG

Как вариант, можешь попробовать Mathematica

Оно п-ц как тормозит. Я говорю о разнице с питоном в несколько порядков.

Axon ★★★★★ ()
Ответ на: комментарий от ZERG

Мой коллега фанат математики. Он написал несложную прогу для анализа определённых данных (прочитать бинарный файл, пробежаться по нему окном с рассчётом скользящей производной, найти пики производной, выдернуть из исходных данных соответствующие куски, найти в них пару основных параметров (минимум, максимум, и т. д.)). Прога работает так: запускаешь и идёшь пить чай. На один файл уходит примерно минут 20-30. Продолжение проекта передали мне, так что с целью упрощения дальнейшей работы для себя, я решил эту прогу переписать на знакомом для меня языке (питон). Кое-как разобрался в принципах её работы по исходникам на математике, и сделал всё то же самое. Так вот, мне даже прогресс-бар в ней делать не пришлось, потому что все рассчёты занимают меньше секунды, и больше всего времени занимает чтение файла с диска в память. Желание иметь дело с математикой у меня после этого отпало раз и навсегда.

Axon ★★★★★ ()

Octave (Matlab) для тестирования идеи, Numpy+python+matplotlib+scipy для решалки. Если совсем-совсем производительность нужна, то крестики и CUDA/OPENCL. Но только после проверенного прототипа на питоне.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от ZERG

Тут кто-то тестировал умножение матриц с помощью numpy и С год-два назад, даже с минимальными оптимизациями С вышел медленнее

numpy сам на C написан, что за хрень вы вытворяли?

peregrine ★★★★★ ()
Ответ на: комментарий от Axon

Так в матлабе делают прототип или разово решить то, что слишком долго руками решать. Конечный вариант всегда надо переписывать на другой ЯП.

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Казалось бы, при чём здесь матлаб?

Axon ★★★★★ ()
Ответ на: комментарий от Axon

А на чем он такое тормозилово написал? Обычно в матлабе пишут скрипты которые 100500 лет работают.

peregrine ★★★★★ ()
Ответ на: комментарий от Axon

Wolfram Mathematica

Оно похоже на матлаб по сфере использования?

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Да чёрт его знает. Вроде бы, да, но я плотно никогда не работал ни с тем, ни с другим.

Axon ★★★★★ ()
Ответ на: комментарий от peregrine

Матлаб - очень крутой калькулятор. Mathematica - монструозная тетрадка. В ней есть какие-то навороченные функции для отрисовки и т.д.

С матлабом я работаю много и он работает быстро, для своих задач.

С Mathematica работал пару раз и желания работать с этой тормозной поделкой больше нет.

tyakos ★★★ ()
Ответ на: комментарий от tyakos

Т.е. в матлабе нет отрисовки? Всё там есть, даже такое извращение как Simulink.

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Иди отдохни, ты видишь в комментариях вещи, которых там нет.

tyakos ★★★ ()
Ответ на: комментарий от tyakos

Пока не увидел разницы с матлабом, кроме того что оно тормозное и более развита часть которая как Simulink, когда матлаб ориентирован на численные методы и работу с данными.

Если что мне просто интересно, а платить или пиратить неохота.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 2)

Python+Numba, Python+Cython.

Обязательно посмотри, как божественнен базовый интерфейс numba.

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от post-factum

Ты просто не умеешь в современный фортран. Хотя и в фортран-77 ты тоже никогда не умел.

grem ★★★★★ ()
Ответ на: комментарий от t184256

видел где-то статью, где даже просто посредством numpy и scipy достигалась скорость расчёта сравнимая со скоростью C++ и Fortran при реализации разностных схемы уравнения Лапласа (задача о стационарном распределении температуры в пластине). В целом выглядело круто, но как в те предложенные реализации запихнуть метод релаксации, для более быстрой сходимости, я не понял :( а без него и для компилируется языков заметно дольше считается.

grem ★★★★★ ()
Ответ на: комментарий от peregrine

Пока не увидел разницы с матлабом, кроме того что оно тормозное и более развита часть которая как Simulink, когда матлаб ориентирован на численные методы и работу с данными.

Ну да. А что ты ожидал от 2х мат. комбайнов?

Если что мне просто интересно, а платить или пиратить неохота.

Возьми пиратскую версию - попробуй. Понравилась - купи. Самый адекватный подход часто, имхо.

tyakos ★★★ ()
Ответ на: комментарий от grem

Понимаешь в чем дело, для ускорения через numpy/scipy надо разложить алгоритм на их примитивы. И пока в Вилларибо еще выражают игру Жизнь через свертку с ядром 3x3, в Виллабаджо уже прихреначили к обыкновенному циклу numba.jit и дивятся на глайдер.

t184256 ★★★★★ ()
Ответ на: комментарий от Axon

Ну так это только подтверждает мой довод. Я сам целую кучу данных с помощью питона обрабатывал, так оказалось, что pandas данные в 10 раз быстрее numpy читает. Но для этого мне понадобилось потратить кучу времени.

ZERG ★★★★ ()
Ответ на: комментарий от grem

Видел похожую, называется Python Classes for Numerical Solution of PDE's

Если найдёшь ссылку - скинь.

ZERG ★★★★ ()

Удвою за фортран. Когда-то ооооооооооочень давно матмоделировал на фортране, ЯП специально заточен под математику.

Как сделать быстро/хорошо?

Никак. Быстро только кошки плодятся.

Любое серьёзное дело требует серьёзного подхода.

rht ★★★★★ ()

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

Как вариант пишешь ядро на C++, а ввод (подготовка данных, пользовательский интерфейс), вывод (текст, картинки и т.д.) на питоне, хотя лично я в силу специфики (гистограммы как единица анализа) итоговый анализ делаю на ROOT (https://root.cern.ch) — в принципе интерфейс из питона есть и туда, правда кривоватый. Для статистики (вектора) лучше всего будет R.

Все наши теоретики сидят на Mathematica — в значительной степени там плевать на скорость (хотя в некоторых направлениях оно там весьма себе быстрое если его правильно готовить), главное там для них удобный интерфейс и более менее гарантированно верный результат. Только если расчёты начинают занимать месяцы, то они чешутся что-то оптимизировать.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)

Спасибо всем отписавшимся!

Остановился на python+numpy.

aquadon ★★★ ()
Ответ на: комментарий от aquadon

Там весь вопрос в

алгоритмах решения. Конечно же нужно брать стандартные хорошо отлаженные библиотеки. Если оно распараллеливается и скорость таки важна (пока что мне кажется не важна), то обязательно нужно копать в OpenMP или MPI.

Откуда берете многочисленные входные данные? Если они не многочисленные, то пофиг на чем писать; если многочисленные, то упретесь в вводъ-выводъ.

Я в основном использую IDL и немного python (numpy), где скорости выходят одинаковые примерно. Идеология питона кажется странной. Стартануть на фортране оказалось весьма просто (но есть кластер и задача явно предполагала fft и возможность MPI); при этом с вводом-выводом напарился.

sshestov ()
Ответ на: Там весь вопрос в от sshestov

Уже реализовал с помощью numpy. Данные на вход придумываю сам - это, скорее, численный эксперимент. Считает быстро, я доволен.

aquadon ★★★ ()
Ответ на: комментарий от Axon

Mathematica вроде как для символьных вычислений в основном, не числодробилка. Это «аналог» maxima скорей.

Sahas ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)