← Лучшие солверы для решения дифференциальных уравнений: на Julia
Обсуждение
Читать и комментировать в ЖЖ ↗
Как я понимаю, юлю лучше сравнивать с "математикой".
Комментарий
Нет, классические сравнения -- Фортран, Си, Матлаб, Питон (слоган там "скорость написания как в Питоне, скорость исполнения как в Си"). Математика там немного про другое: там символьные вычисления и куча готовых тщательно согласованных друг с другом алгоритмов как основное. Но в Julia легко подобрать пакеты, которые делают её вполне сравнимой с Mathematica -- то есть набор свойств Mathematica получается не "из коробки", а нужно немного потрудиться.
Комментарий
Фортран, матлаб - ну с ними вооще что-то сложно сравнивать. Питон, си, и, о боги, js - это еще понятно, типо "быстрые считалки". Ну типа взять и за пять минут накидать расчет какой-нибудь фигни.
Комментарий
Пиотн не "быстрая считалка", он "быстрая писалка". Поглядите на диаграмму из поста! В этом-то и фишка, что Julia решает проблему двух языков: обычно за пять минут накидывают на Питоне расчёт какой-нибудь фигни, а потом оказывается, что один расчёт идёт три часа. Тогда за три часа переписывают на Си, и расчёт идёт пять минут. Вот на Julia пишут за пять минут и расчёт идёт пять минут. В этом главная фича Julia. Хотя там есть и много других приятных возможностей, но для вычислительных математиков это главное.
Комментарий
Да, я просто некорректно написал. И в математика тоже впринципе можно добиться "пишем пять минут - считаем пять минут", вот только переход в математика из императивных языков (си, питон, ява, юля, да в общем-то миллион их) займет три года жизни, а переход на юлю из си или питона - недели две.
Комментарий
Да. При этом даже кусочек синтаксиса матлаб был сохранён именно для удобства перехода.
Комментарий
Просто смешно, выбрать из всего что есть по https://cran.r-project.org/web/views/DifferentialEquations.html один из решателей. (эквивалентный кстати фортрану (а есть ещё эквивалентный си)). И вместо эталонной реализации использовать что то написанное "за ради скорости"? Кто то тесты прогонял на этой реализации быстрой? Сравнивал с точными решениями?
Собственно картинка вообще ни о чем (она вообще не имеет отношения к первому абзацу текста), написанные на коленке не понятно кем синтетические тесты (идущие чаще всего "вдоль" парадигме среды вычисления).
Комментарий
Вот это вот гуано, код на R?
pisum = function() {
t = 0.0
for (j in 1:500) {
t = 0.0
for (k in 1:10000) {
t = t + 1.0/(k*k)
}
}
return(t)
}
PS
> pisum = function() {
+ t = 0.0
+ for (j in 1:500) {
+ t = 0.0
+ for (k in 1:10000) {
+ t = t + 1.0/(k*k)
+ }
+ }
+ return(t)
+ }
> pisum()
[1] 1.644834
> system.time(pisum())
пользователь система прошло
3.080 0.004 3.109
> system.time(pisum())
пользователь система прошло
3.072 0.000 3.075
> system.time(pisum())
пользователь система прошло
3.056 0.000 3.059
> pisum = function() {
+ for (j in 1:500) {
+ k <- 1:10000
+ t <- sum(1/(k*k))
+ }
+ t
+ }
> pisum()
[1] 1.644834
> system.time(pisum())
пользователь система прошло
0.116 0.000 0.118
> system.time(pisum())
пользователь система прошло
0.104 0.000 0.102
> system.time(pisum())
пользователь система прошло
0.096 0.000 0.098
>
Как можно после этого смотреть на этих аферистов?Комментарий
Я боюсь, что вы не понимаете суть происходящего: борьба идёт не за скорость саму по себе или альтернативную реализацию уже реализованного. Просто разработчики алгоритмов решения дифференциальных уравнений переходят на Julia, пишут свои учебные курсы на Julia и отлаживаются на Julia, вот это суть происходящего. А разработчики Julia делают унифицированный интерфейс для решения именно дифуров, чтобы облегчить жизнь пользователей солверов. Именно поэтому на Julia столько разных видов уравнений покрыто. А ваши "стандартные реализации" -- это махонький кусочек ширпотреба. Вам не жмёт в решении дифуров -- не ходите туда, пользуйтесь Фортраном и прочими "стандартными реализациями".
Типичная работа на Julia -- это типа вот такой: https://julialang.org/blog/2017/09/gsoc-derivative_operators
Комментарий
Напишите им письмо. На них вполне все нормально смотрят. Что всех новеньких крутых на рынке поначалу называют аферистами, это тоже привычно. А потом динозавры вымирают.
Комментарий
Слать письмо _аферистам_ выложившим (не в первый раз) в своем уютном _лживый_ тест? Им уже писали и не раз, все "божья роса".
В R for() применяется только для нанесения побочного эффекта. И в R просто _нет_ скаляров.
Что в приведенном мной коде (который считает pi_sum на столько восхитившей Вас картинке в посте) Вам непонятно?
Код идиоматичный для R быстрее _минимум_ в 30 раз. (и что характерно существенно короче)
PS Я бы поостерегся тратить свое время на продукт, который пишется людьми с такой репутацией (за которую говорят их поступки)
Комментарий
и с Матлабом у них код такой же невекторизованный, с такого же порядка эффектом. Жулики как есть.
Комментарий
Даже для Python надо где-то 70% самому писать, а уж Julia и близко не сделать сравнимой. Два года назад я предположил, что написать розетту для Mathematica займет недели полторы. Ха.
Комментарий
***Питон не "быстрая считалка", он "быстрая писалка".
а вы знаете еще какие-либо быстрые хорошие писалки???
любопытно бы послушать ваше мнение
Комментарий
Все скриптовые языки -- это по факту быстрые писалки. Но медленные считалки, за эту медленность их и не любят. Julia как раз делалась, чтобы решить эту задачу.
Комментарий
спасибо, это я понимаю
думал, может я не знаю каких-то достаточно быстрых удобных писалок в качестве альтернативы питону
может еще кто чего подскажет ) из тех кто прочитает
Комментарий
А какую книжку можете посоветовать по R?
Комментарий
Тут следует различать уровень требуемый знакомства.
Просто познакомиться с R хорошо введение с официального сайта "An Introduction to R" https://cran.r-project.org/manuals.html
Если Вы уже владеете на достаточно высоком уровне искусством написания программ, то можно просто прочитать "The R language definition" где практически все основные техники кратко описаны с точки зрения R.
Если в момент прочтения второго мануала что то не понятно, то читаем (или просто смотрим по нескольку раз до понимания сути происходящего) МИТовский курс классический от Сасмана и Абельсона по Схеме https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PL8FE88AA54363BC46
Дело в том. что R писалось её Автором поверх (и после) прохождения именно этого курса, и R по сути это Схема + много синтаксического сахара. В ней возможно повторить (практически "пооператорно" с поправкой на синтаксис) всё что показано в лекциях SICP.
Синтаксический сахар введен был для доступа к богатству другого языка APL(его современная и свободная реализация J). Это для понимания парадигмы "векторных операций". Естественно R полностью не потянул мощь APL(J) системы и достаточно что то такое прочитать если хочется действительно понять что такое векторные операции http://www.jsoftware.com/help/jforc/culture_shock.htm#_Toc191734290
Ну а о возможностях библиотек R лучше стартовать с вот этой точки https://cran.r-project.org/web/views/
Комментарий
Спасибо. А если с уклоном в data science?
Комментарий
Тогда по любому начать со _старого_ издания "R book" (2007) (новое издание "волшебным образом" превращено в тыкву :( ) и "R graphics" (ggplot2 надо читать отдельно).
А далее обозначенная область слишком уж широка, надо смотреть в последнюю ссылку сообщения выше и искать для текущей области интереса подходящий раздел(ы).