Лекция Стивена Вольфрама

ВНИМАНИЕ!!!

БЛОГ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС https://blog.wolframmathematica.ru

Онлайн машина вычисления знаний Wolfram|Alpha ®

Онлайн машина вычисления знаний Wolfram|Alpha ®

суббота, 29 июня 2013 г.

Рассказы пользователей Mathematica

Рассказы пользователей Mathematica
Rasskazy_polzovatelej_Mathematica_Large.png
Рассказы пользователей Mathematica
В данном посте публикуются рассказы пользователей и создателей Wolfram Mathematica о том, как они пришли к Mathematica, что делали в ней, свои идеи и планы на будущее, свое отношение к системе, рассказы о том, как она разрабатывалась и разрабатывается.
Если Вы хотите рассказать свою историю, отправьте ее на e-mail: wolfram.mathematica.ru@gmail.com
(к письму приложите также Вашу фотографию и укажите название организации в которой Вы работаете и Вашу должность в ней)
АВТОРЫ РАССКАЗОВ:
Максим Сахаров
Сильва Торосян
Роман Осипов
Алик Клименков
Андрей Макаренко
Леонид Шифрин (скоро)
Всеволод Чупрыгин (скоро)
Иван Трусов (скоро)
Rasskazy_polzovatelej_Mathematica_1.gif Максим Сахаров
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, технический консультант компании Softline
Одно нелинейное уравнение или как я встретил
Стивена Вольфрама
Май, 2009. Я, студент второго курса кафедры САПР Московского Государственного Технического Университета имени Н. Э. Баумана, в предвкушении очередной летней сессии. Читался нам предмет, который назывался “Основы САПР”, по сути, представлявший из себя ликбез по CAD/CAE-системам. Курс имел уклон в сторону вычислительной математики и лектора, в особенности, интересовала проблема получения достоверно точного решения систем линейных алгебраических и обыкновенных дифференциальных уравнений в современных CAE системах. Предмет предполагал экзамен, который можно было получить автоматом, однако получить автомат мне, к моему огорчению, не удалось. Не хватило совсем чуть-чуть. Учить и сдавать предмет мне крайне не хотелось, поэтому я написал лектору электронное письмо в котором поинтересовался, что необходимо сделать для того, чтобы получить дополнительные баллы и, как следствие, экзамен автоматом. После непродолжительной переписки я получил письмо следующего содержания.
мне нужны 32 верных знака для нелинейного уравнения из второй лабораторной - если получите правильно, тогда можно
Очевидно, что я сразу ухватился за этот шанс. Не обладая, однако, большими знаниями в программировании, я всячески отгонял от себя мысль о том, что придется писать программу на Си или С++. Ах да, совсем забыл, вот это уравнение.
Rasskazy_polzovatelej_Mathematica_2.png
Ведомый желанием решить поставленную задачу с, как можно, меньшими затратами сил и времени я обратился за помощью в сообщество математиков в социальной сети ВКонтакте. Отзывов на свой просьбу я получил достаточно. Однако один из них произвел на меня особое впечатление. Некто Михаил Гуров представил мне сразу тысячу знаков в решении данного уравнения. На мой вопрос о том, какими средствами и методами он пользовался, я получил хорошо известный мне ответ, что существует множество численных методов которые можно запрограммировать самому и точность решения, в данном случае, будет ограничена лишь мощностью компьютера. А то я не знал...
Но затем он написал еще одно сообщение...
Если ты не программер,скачай себе Mathematica Wolfram Research 7.0 и радуйся жизни (решает все что угодно!!!).
Я скачал триал-версию ▸▸▸ данного программного продукта и все изменилось...
Спасибо, Михаил! Я не только успешно решил данное уравнение и получил автомат на экзамене, но и нашел, в некотором роде, свое призвание. Юбилей системы Mathematica я отметил на 10 дней раньше положенного срока, когда произошла моя первая и, надеюсь не последняя, встреча со Стивеном Вольфрамом...
Rasskazy_polzovatelej_Mathematica_3.gif
И если вы еще не забыли про то самое уравнение, вот оно - решение с точностью в 1000 знаков после запятой...
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_4.gif
Rasskazy_polzovatelej_Mathematica_5.gif Сильва Торосян
cтарший инженер департамента компьютерных наук факультета точных и естественных наук Тбилисского гос. университета им. И. Джавахишвили
Электроный учебник “Численные методы” в Wolfram Mathematica, или с чего всё начиналось.
Моё первое знакомство с системой Mathematica связано с именем моего научного руководителя Заура Мачаидзе, который к конце 2004 года (тогда я была студенткой 4-го курса Тбилисского гос. педагогического университета им. С.-С. Орбелиани) показал мне эту уникальную систему, начиная с вычисления значения числа π до широких графических возможностей. В 2005 году я защитила дипломную работу на тему: “Электронный учебник - Численные методы”, разработанный в системе Mathematica.  Этот электронный учебник включал в себя тестирующую программу по численным методам. Наша цель была показать, что Mathematica не отстаёт от таких языков программирования как Visual Basic и C. Эта разработка заняла III место на республиканской конференции, проведённой академией молодых учёных Грузии.
Разработка этой программы требовала не малого времени и усердия, на что я и моя младшая сестра, в то время тоже студентка физико-математического факультета, посвятили последнии годы студенчества. Нас привлекала простота и ясность самой системы, а особенно её язык программирования, который на наш взгляд, является самым доступным и универсальным. Но несмотря на всё это, сторонников использования системы Mathematica в Грузии почти не было. На сегодняшний день ситуация изменилась, число студентов Тбилисского государственного университета, выбирающих предмет "Возможности системы Mathematica" увеличевается, что меня очень радует.
Ниже я хочу привести один из примеров электронного учебника "Численные методы".
Интерполирование функций
Для функции Rasskazy_polzovatelej_Mathematica_6.png построить интерполяционный полином Лагранжа.
Построим график этой функции:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_7.gif
Найдём список значений функции Rasskazy_polzovatelej_Mathematica_8.png по x с шагом 0.6, когда x∈(-3;3):
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_9.gif
По этим данным построим интерполяционный полином:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_10.gif
Изобразим графики полученного полинома и данной функции:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_11.gif
Rasskazy_polzovatelej_Mathematica_12.gif Роман Осипов
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, администратор Русскоязычной поддержки Wolfram Mathematica
Путь от биологии к математике и Mathematica
Мой путь к математике и системе Mathematica был долог, но я очень доволен, что прошел его и иду по нему дальше, так как математика вместе с Mathematica позволяют осуществлять совершенно феноменальные вещи за максимально короткое время с максимальным качеством.
Когда я учился в школе, как бы это странно сейчас не казалось, я не особо любил математику, она казалась мне совершенно непонятной наукой, видимо потому, что школьный учитель не был способен заинтересовать меня ею, показав какие-то красивые вещи и восхитительные приложения математики.
В школе я всерьез увлекался биологией и ходил в Кружок юных натуралистов при Зоологическом музее МГУ им. М. В. Ломоносова ▸▸▸, которым руководил и руководит восхитительный человек и педагог, Дунаев Евгений Анатольевич ▸▸▸. В кружке на протяжении четырех лет мы ездили в разнообразные научные экспедиции от Белого моря до Кавказа и Крыма, изучали зоологию, ботанику, герпетологию, энтомологию и множество других биологических дисциплин, участвовали во множестве олимпиад и соревнований и конечно слушали лекции, как Дунаева Е. А., так и множества других лекторов. При этом цикл лекций в кружке покрывал огромный спектр вопросов, фактически полностью охватывая все занятия на первых двух курсах биологического факультета МГУ им. М. В. Ломоносова.
Естественно, занимаясь настолько много биологией, я хотел поступить на биофак МГУ и продолжить ею заниматься, но, чтобы поступить туда нужно было сдать вступительный экзамен по математике, так исторически сложилось что он шел первым на биофаке и традиционно был достаточно сложным. Поэтому я пошел на курсы, которые посещал около полугода. Курсы вел замечательный преподаватель, который потрясающе решал задачи, меня поразила тогда математическая логика и четкость, когда каждый шаг строг и обоснован, а также удивительная красота стройного математического доказательства или вывода. Тогда я начал решать много задач и каждый день старался брать самые сложные, как мне казалось, которые находил в книгах, например, вступительных вариантов прошлых лет.
Однако, так получилось, что в это же время меня заинтересовала химия, признаться довольно сильно. А так как у меня была золотая медаль, я решил, что разумно иметь подстраховку МГУ и поступил в МИТХТ (Московский государственный университет тонких химических технологий им. М. В. Ломоносова ▸▸▸). У него экзамены были на пару дней раньше, чем в МГУ и он является одним из ведущих химических ВУЗов России (с точки зрения химической технологии — он первый). Поступив туда, на экзамен в МГУ я шел спокойно, так как во-первых я охладел несколько к биологии, а во вторых уже был по сути студентом.
На вступительном экзамене попался вариант, задачи в котором были знакомы по курсам, подход к каждой из них был известен.
Rasskazy_polzovatelej_Mathematica_13.gif
Само собой, задачи этого варианта сейчас не кажутся хоть сколь нибудь сложными, а с помощью Mathematica решаются за секунды:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_14.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_15.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_16.gif
Решив задачи этого варианта, я сдал работу и со спокойной душой пошел домой. Спустя некоторое время я поехал смотреть результаты экзамена. К своему небольшому разочарованию я увидел оценку “4”. Это было удивительно, так как на экзамене я помог соседям справа и слева решить пару задач и в списке у них значилась оценка “5”. Посмотреть работу не удалось, так как на все 600 поступающих дали порядка 15 минут времени на апелляции. Узнав к тому же что те, кому я помог, были “знакомы” с приемной комиссией, я понял окончательно, что биофак это не мое. Я решил заниматься химией.
Все лето я решал огромное количество задач по математике со всевозможных олимпиад и вступительных экзаменов, это было увлекательно и происходило видимо отчасти еще и потому, что мое достоинство было несколько задето тем экзаменом. Также я читал и химическую литературу. И, параллельно, начал работать в моем первом пакете, как бы сейчас это не было странно, это был Mathcad. В нем я порешывал задачи, строил графики, учился программировать.
В сентябре начались занятия в МИТХТ и, само собой, было очень много химии. Химия вначале была неорганическая и наверно именно это сделало свое дело: я перестал видеть логику в химии, так как в неорганической химии крайне важно помнить огромное количество реакций и при разных условиях даже похожие вещества взаимодействуют с одним и тем же третьим веществом по-разному.
К счастью, мои успехи в математике не остались не замеченными в ВУЗе и меня пригласили на втором курсе перевестись в группу, которую учили по специальности “Прикладная математика”, открытую великим ученым и преподавателем, Карташовым Эдуардом Михайловичем ▸▸▸ за год до моего поступления.
Я перевелся и начал изучать математику уже серьезно.
Параллельно я продолжал решать все больше задач в Mathcad и на языках программирования Visual Basic (на нем написал например программу для обработки результатов физико-химического эксперимента длиной порядка 1500 строк), С, Lisp, Prolog.
Всегда при решении задач я чувствовал то, что любому из этих языков не хватает логики, красоты, возможностей, продуманности, изящности.
Однажды, мне потребовалось следующее:
нужно было взять две точки на плоскости и построить половину окружности, диаметром которой служит отрезок, соединяющий эти две точки.
Я реализовал эту задачу в Mathcad и в целом был доволен результатом (см. принтскрин документа Mathcad с решением этой задачи ниже). Это была одна из простейших программ, что я тогда писал в нем и то, как она выглядела, меня не смутило. Но, в душе сидело чувство, что так это не должно решаться. Все должно быть просто и изящно, точно так как все выглядит в величайшей науке — математике.
Rasskazy_polzovatelej_Mathematica_17.gif
Однажды, в поисках нового математического софта для себя я встретил название “Wolfram Mathematica”. Подумал, что стоит посмотреть. Когда я запустил эту систему, сначала она показалась мне не особо понятной, так как я привык к другому, плохому, стилю программирования. Но, постепенно я привык и втянулся, так как встроенная документация Documentation Center ▸▸▸ была потрясающе подробной, понятной, логичной, структурированной и она была насыщена реально интересными примерами, чего я не встречал ни у Mathcad, ни у Maple, ни у Matlab. При этом меня поразил дизайн системы и дизайн сайтов компании Wolfram Research ▸▸▸.
После первого знакомства с системой, я решил попробовать написать в ней программу, которая решает туже проблему, что и программа Mathcad ранее.
Сразу бросилось в глаза, что графика в Mathematica векторная и выглядит намного качественее, чем в остальных пакетах. Еще было все что нужно: функция Circle (для построения произвольной окружности или ее дуги), Point (точка на плоскости или в пространстве), а также все необходимые настройки их внешнего вида и функции для поиска расстояний между точками, решения уравнений и пр.
Тогда и был реализован код для решения задачи, который вы видите ниже:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_18.gif
Что удивило меня еще больше, так это то, что эту статическую картинку можно легко переделать в динамический объект с помощью функции Manipulate:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Rasskazy_polzovatelej_Mathematica_19.gif
Как только я сделал это, я понял, что Mathematica это именно то, что я так долго искал. То, что мне нужно было. И с этого момента все задачи я стал решать именно в ней.
Чуть позднее у меня появилось желание объединить вместе всех пользователей системы Mathematica и на сайте ВКонтакте я нашел группу “Wolfram Mathematica” в которой на тот момент (примерно июнь 2011 г.) было около 80 человек. Сообществом руководил Александр Исаков ▸▸▸, я попросил его добавить меня в администраторы, так как к тому времени я уже достаточно давно отвечал на вопросы пользователей о Mathematica и у меня были далеко идущие планы по развитию сообщества. Александр любезно согласился и с того момента я стал делать все, чтобы сообщество росло, а Mathematica становилась популярнее с каждым днем. Благодаря этим усилиям, сообщество выросло уже более чем в 15 раз и дошло до 1400 чел.
Параллельно я пытался придать ему официальный статус и начал переписку об этом с Галиной Ильдаровной Михалкиной ▸▸▸, которая очень помогла мне в этом, а также в том, чтобы первому в Восточной Европе получить статус сертифицированного инструктора ▸▸▸. Благодаря ей Русскоязычная поддержка стала официальной и у меня появились возможности большого профессионального роста. Я не перестаю удивляться, насколько много она делает для продвижения Wolfram в СНГ и ее работа достойна самого глубокого уважения и благодарности.
Постепенно, получив статус инструктора, у меня появилась возможность ездить по России и другим странам бывшего СССР, общаться с пользователями системы и показывать им и всем желающим насколько Mathematica и другие продукты Wolfram Research мощные инструменты, позволяющие делать если не совсем все, то уж практически все, точно — от поиска численного решения сингулярных интегральных уравнений до Web API ВКонтакте ▸▸▸.
Теперь уже Русскоязычная поддержка стала достаточно крупным и динамически развивающимся объектом и я этому крайне рад.
Призываю всех желающих вступать в сообщество поддержки ▸▸▸, работать в самой мощной и универсальной вычислительной системе Мира — системе Mathematica ▸▸▸, помогать новым пользователям в их вопросах, становиться сертифицированными инструкторами Wolfram Research (для этого напишите письмо Галине Ильдаровне на адрес galinam@wolfram.com), писать посты для блогов на интересующие вас темы (для этого напишите письмо мне на адрес wolfram.mathematica.ru@gmail.com) и двигаться только вперед!
Rasskazy_polzovatelej_Mathematica_20.gif Алик Клименков
студент IV курса механико-математического факультета КНУ им. Т. Г. Шевченко
Курсовая работа и хороший человек
Мое знакомство с Mathematica произошло в конце весны 2011 года. Это был конец моего II курса в университете и, как полагается, всем студентам дали курсовые работы, которые нужно было выполнить до конца учебного года. К слову сказать, все задания выдали еще в середине зимы, сразу после каникул, но, как и большинство обычных студентов, особо никто не торопился их выполнять. Каждая курсовая работа содержала в себе задачу по аналитической механике — была дана система из нескольких тел, и нужно было определить их движение по заданным параметрам и начальным условиям. Решение задачи сводилось к составлению уравнений Лагранжа второго рода с последующим их решением. Но в то время я не особо понимал, что нужно делать, и, когда сроки сдачи начали поджимать, я не нашел способа умнее, чем попросить у сотрудника кафедры готовую работу с прошлого года. В работе было коротко показано, как выводить уравнения Лагранжа и в конце приводился код численного их решения в Mathematica. Если вывод уравнений с горем пополам еще можно было осилить, то решение уравнений вообще представляло собой один большой знак вопроса, потому что мой опыт программирования был скуден. В работе, которую мне дали, система была немного другой, чем у меня и, следовательно, я должен был переписывать код под свой вариант. Код программы казался мне ужасным, огромным и непонятным. Естественно, я не захотел в нем разбираться. Точно так же обстояло и дело с моим одногруппником, но, в отличие от меня, он все же старался писать код по аналогии с решенной задачей. Но, к сожалению, у него ничего не вышло. Он пошел дальше и стал искать в интернете помощи и нашел форум Русскоязычной поддержки Wolfram Mathematica ▸▸▸, администратором которого является Роман Осипов. Там он задал вопрос такого содержания:
Rasskazy_polzovatelej_Mathematica_21.gif
Теперь, с опытом, я могу лишь посмеяться над этим вопросом. Сразу видно, что человек поленился и не пытался разобраться с синтаксисом программы. Но самое интересное не в этом, а в том, что Роман ответил на этот вопрос. И причем не просто ответил, а все красиво разложил по полочкам и написал правильный, работающий код! То, что человек разбирается в чужих задачах и совершенно безвозмездно дает решение — это, несомненно, меня зацепило, потому что я догадывался, что значит делать что-то для других.
Rasskazy_polzovatelej_Mathematica_22.gif
Но, несмотря на это, я все же переписывал код с форума, переделывая его под свою задачу. После того, как я удачно сдал курсовую работу, я на время позабыл о Mathematica, но позже я узнал, что здесь можно вычислять разнообразные интегралы, строить графики, решать математические задачи, но самое главное, что код, который выполняет все эти действия, легок для понимания. Сейчас я с уверенностью могу сказать, что основной опыт программирования я получил именно в Mathematica.
P. S. Хочу пожелать Русскоязычной поддержке и лично Роману Осипову терпения, развития и плодотворности. Пусть не каждый человек, который задал вопрос, оценит ответ по достоинству, но все же я благодарен Вам и уверен, что труд Ваш не напрасен.
Makarenko_Andrej_1.gif Макаренко Андрей
руководитель научно-исследовательской группы “Конструктивная Кибернетика”
История освоения Wolfram Mathematica, универсальной и мощной платформы автоматизации интеллектуального труда
Введение
Этот пост, как в общем-то понятно из его названия, про то, как я и мои коллеги осваивали программу Mathematica, и что из этого в итоге вышло. Мотивацией к написанию настоящей заметки послужило три, в общем-то малосвязанных друг с другом, момента.
Во-первых, 02 июля 2013 года, наша научно-исследовательская группа объявила о смене технической политики в области математического моделирования и высокопроизводительных вычислений (подробнее...). И этот пост, в принципе, иллюстрирует и вполне объясняет  принятое нами решение, которое при поверхностном взгляде может выглядеть как сильное ограничение.
Во-вторых, 23 июня 2013 года, исполнилось ровно 25 лет постине удивительной программе Wolfram Mathematica. Наше краткое поздравление доступно по ссылке, а настоящую заметку – можно считать его расширенной версией.
В-третьих, в блоге Российского сообщества пользователей системы Mathematica появился минипроект: “Рассказы пользователей Mathematica”. После ознакомления с ним, подумалось, что наша нетривиальная и многоходовая история освоения Wolfram Mathematica, возможно будет интересна читателям и может быть кого-нибудь подвигнет на систематическое изучение и применение этой многогранной и мощной программы.
Данный пост практически не содержит кода и математики и совсем не содержит решения конкретных задач. И причин тому две. Во-первых, заметка и так уже получилась по графомански неприлично объёмной, но как говорится: “из песни слов не выкинешь”. Во-вторых, назначение у данного поста иное, нежели  технические подробности, он о пути и идеологии.
Здесь необходимо отметить, что все высказывания и мысли об ограничениях/достоинствах тех или иных программ и/или технологий, приведённые в данной заметке ниже – это есть субъективное мнение её автора.
Этапы освоения Wolfram Mathematica
Путь освоения программы Wolfram Mathematica, как можно будет увидеть ниже, у меня был достаточно извилист и в чём-то тернист, и в нём явно прослеживается несколько основных этапов. Эти вехи кратко представлены на интерактивной диаграмме:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_2.gif
Ну а теперь чуть подробнее о каждом из этапов.
2000 г. Версия 4. Первое знакомство.
Да, именно c 4-й версии Wolfram Mathematica началось моё знакомство с этим программным продуктом. Первоначально Mathematica воспринял как систему компьютерной алгебры, но в тоже время и почувствовал мощь и скрытый потенциал программы. В учебной и научной деятельности не применял. Причины этого были разные.
С одной стороны уже достаточно хорошо знал и активно применял для численных вычислений MathCAD. В тех случаях, когда его ресурсов не хватало, расчёты делал в собственных программах, написанных на языке С/C++ с привлечением ряда библиотек численного анализа. С другой стороны, для аналитических расчётов вполне хватало карандаша, ластика и бумаги. Информацию при этом черпал из многочисленных справочников и монографий (преимущественно в печатном виде).
Таким образом, особой потребности в изучении этой сложной и непонятной программы, как тогда казалось (особенно после символьно-графического интерфейса MathCAD) – я не испытывал. Но два слова: Wolfram и Mathematica – в глубинах памяти засели.
2006 г. Версия 5.2. Первая попытка применения.
Прошло 6 лет. За это время мои запросы к вычислительным инструментам выросли, но к версии 5.2 выросла и сама программа Mathematica. Тем не менее, попытка сразу написать на ней объёмный код для численных расчётов оказалась неудачной. Неконтролируемое потребление оперативной памяти (а её на компьютере тогда было существенно меньше 4-х ГБ) и плохая устойчивость кода свели на нет все усилия. Отрицательную роль конечно сыграло и отсутствие навыков программирования на языке Mathematica, а также отсутствие квалифицированной техподдержки в “шаговой” доступности (не встретился нам тогда человек, по знаниям и отзывчивости равный Роману Осипову). Вновь выручил язык С и сторонние библиотеки. А Mathematica была отложена до лучших времён, с мыслью, что Стивен Вольфрам обязательно будет продолжать её улучшать. Но всё чаще стало приходить понимание, что для аналитических математических расчётов карандаша, ластика и бумаги уже хватает не всегда...
2008 г. Версия 6. Редкие случаи применения.
Именно 6-я версия Mathematica стала инструментом, который начал сильно выручать со сложными аналитическими расчётами (и порой не столько сложными, сколько утомительными). Причём выбор пал почему-то не Maple, видимо всё-таки версия 4 Mathematica сделала своё дело... Правда на данном этапе программа использовалась исключительно в режиме последовательного диалога (этакого “умного калькулятора”):
Вычислить производную :
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_3.gif
Решить дифференциальное уравнение:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_4.gif
Решить систему алгебраических уравнений:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_5.gif
Взять неопределённый интеграл:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_6.gif
Честно говоря, скорость и лёгкость, с которой Mathematica “щёлкала” приведённые выше примеры – завораживала и притягивала. Тем не менее, использовать программу шире, нежели продвинутый калькулятор, не выходило, видимо не пришло ещё её время. Поэтому простенькие численные расчёты всё также делал на MathCAD, а сложные и ресурсоёмкие – всё также писал на языке С/C++. К тому времени освоил технологии SIMD и OpenMP – программы обрели нитевидный параллелизм на уровне ядер процессора, и жизнь сразу наладилась, но не надолго.
2009 г. Версия 7. Вспомогательный инструмент.
В 2009 году случился переломный момент:  возможностей MathCAD, даже для простеньких вычислений, резко стало не хватать, и остро встал вопрос на что мигрировать: Maple, MatLAB, Mathematica, что-то иное. Здесь стоит оговориться, что значит: возможностей стало не хватать. Для производительной и комфортной работы очень хотелось следующих вещей:
Интеграция сильной символьной математики и сильных численных методов в рамках одной программы, одного документа;
Сокращение “зоопарка” программ для сложной визуализации, статистической обработки, анализа графов и т.п. задач;
Возможность гибкой и глубокой настройки внешнего вида графиков и диаграмм для задач когнитивной визуализации;
Прозрачный экспорт математических выражений в нотацию LaTeX для документирования и публикации;
Прозрачный экспорт математических выражений в нотацию языка C при написании программ под HPC кластеры.
Ряд малораспространённых, но интересных программ, а также полуживые Open source решения были отвергнуты сразу. Нужна была масштабируемая платформа с ясным будущим.
Maple был отвергнут из-за своей нестабильности и ограниченности (при решении тех задач, которые нам требовались). Хотя, справедливости ради, стоит отметить, что в то время Maple существенно опережал другие универсальные математические пакеты в вопросах решения дифференциальных уравнений и визуализации их фазовых портретов.
MatLAB проходил по большинству формальных требований, правда символьные вычисления были слабоваты, и интерфейс рабочей области (области вычислений) вызвал противоречивые чувства: неинтуитивный ввод команд, нагромождение окон,  и т.п. моменты явно шли ему не в плюс.
Оставалась Mathematica, удовлетворяя и по формальным требованиям, и по интерфейсу рабочей области, который некоторые из моих коллег охарактеризовали как элегантный. На этом муки выбора прекратились. И появилась мотивация. Началось более-менее систематическое изучение синтаксиса и семантики конструкций языка Wolfram Mathematica. В самом начале было трудно, сильно трудно, но здорово выручила книга: [Дьяконов В.П. Mathematica 5/6/7. Полное руководство]. Правда она очень быстро потеряла актуальность, и основное место источника информации занял документационный центр.
Mathematica стала вспомогательным инструментом для численных расчётов – весь необходимый код, ранее созданный в MathCAD начал переноситься в эту среду. Первые программы писались практически исключительно в процедурном стиле (проекция  мышления от С/С++ и MathCAD):
Makarenko_Andrej_7.gif
Ремарка. Кое где в очень старом коде, который приходится использовать повторно, я всё ещё нахожу монстров в виде 5-6-ти вложенных циклов и/или операторов IF THEN ELSE. Естественно, эти места безжалостно рефакторятся, бесплатно давая 2x-13x кратный прирост производительности, придавая коду строгий и лаконичный вид.
Примерно в это же время в моей научной деятельности появились тяжёлые вычислительные задачи, требующие для своей реализации MPI кластеры. Эти задачи конечно программировались на языке C/C++, но макетирование и отладка вычислительных алгоритмов велись на Mathematica.
Большинство аналитических расчётов делалось уже в Mathematica, но всё также в режиме последовательного диалога (на уровне изолированных выражений и операций). При этом  отдельные задачи мы стали оформлять в виде цельных ноутбуков, фактически документируя идеи, ход принятия решений, доказательства утверждений, или разработку алгоритмов и процессы вычислений.
Отдельное большое направление применения Mathematica – это  когнитивная визуализация результатов расчётов и оформление иллюстраций для публикаций, отчётов, презентаций.
Mathematica   стала хорошим помощником. Правда очень сильно не хватало статистических функций и критериев проверки гипотез, функций по вейвлет-анализу, а также ряда специальных возможностей: подгрузки собственных функций и библиотек созданных на языке C/C++; запуск внешних приложений; компилирование функций в С платформу и т.п. фишек.
2010 г. Версия 8. Основной инструмент.
Выход 8-й версии Mathematica ознаменовал собою прорыв. Интерфейс стал стабилен, а сообщения об ошибках ввода и синтаксиса – весьма разнообразными и информативными. Вычислительное ядро прогнозируемо потребляло оперативную память, время исполнения программ было ожидаемо и приемлемо.
Для улучшения наших навыков программирования, и, возможно, спасения своих нервных клеток, наши зарубежные  партнёры посоветовали (и дали почитать, за что им большая благодарность)  книгу   [D.B. Wagner, Power programming with Mathematica], после её прочтения “по диагонали” код немного выправился и преобразился:
Makarenko_Andrej_8.gif
После книги D.B. Wagnera и нескольких месяцев упражнений, с десятками “подходов к снаряду”, из кода исчезли монстры процедурного стиля, а сам стиль остался в самом минималистичном виде. Т.е. процедурный стиль остался в трёх местах:
где он действительно необходим (в том числе по условию исходной задачи);
где избавление от него занимает неоправданно много времени, а код нужно просто запустить, чтобы опробовать идею;
в весьма запутанных случаях, где у программиста всё ещё не хватает квалификации и навыков функционального программирования и программирования в терминах Rules & Patterns. В борьбе с этим досадным моментом весьма помогает деятельность Леонида Шифрина и хороший форум для сложных и простых вопросов mathematica.stackexchange.com.
Ремарка. Здесь необходимо отметить, что благодаря усилиям сообщества ВКонтакте “Wolfram Mathematica | Русскоязычная поддержка” и лично Романа Осипова, замечательная книга D.B. Wagnera, стала доступна в электронном виде (см. ссылку).
Переход к функциональному стилю давался нелегко. И основная трудность – это не освоение синтаксиса языка Wolfram, а именно формирование алгоритмического мышления в терминах: Map, Thread, Apply, Rules, Pattern, вместо конструкций for, while, if. Возможно конкретно в этом и заключается ореол таинственности и закрытости Wolfram Mathematica для изучения, при поверхностном взгляде на неё людей, выученных на парадигме языков программирования Fortran, С, Pascal, Basic и им подобных.
Взрывной рост возможностей Wolfram Mathematica, как раз совпал с взрывным ростом наших потребностей: HPC GPGPU CUDA, Data Mining, Data Science, Graph Analysis, Image Analysis, Text Analytics, Nonlinear Dynamic, Big Data. Все сильные ограничения 7-й версии, в 8-й были сняты. Фактически, функционал программы синхронизовался с задачами нашей научно-исследовательской группы (вполне возможно, что и наоборот...).
Mathematica стала применяться для достаточно сложных и ресурсоёмких численных расчётов. К программированию на C/C++ обращались только в самых экстремальных случаях, тем более, что наши зарубежные партнёры предоставляли доступ к GridMathematica кластеру. В общем дело пошло, но мы очень быстро вновь упёрлись в ограничение. Точнее неудобство Mathematica, как среды для разработки и отладки объёмного, алгоритмически насыщенного кода. Но выход был найден практически моментально – это продукт Wolfram WorkBench.
А как же аналитика? Практически все аналитические расчёты были переведены на Wolfram Mathematica, причём глубина использования возможностей символьных вычислений этой программы резко возросла:
(i) многоэтапная обработка символьных выражений с ветвлением операций (путей обработки), как в простеньком иллюстративном примере:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_9.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_10.gif
(ii) а также доказательство некоторых утверждений полным перебором вариантов; машинный синтез моделей (формул) по заданным критериям; и решение массы других задач.
2012 г. Версия 9. Главный инструмент.
И вот в конце 2012 года вышла 9-ка. Интеграция с языком R, поддержка цепей Маркова, расширенная поддержка графов – сняла массу ограничений по статистике и по Machine Learning.
Истинная 64-х битная платформа:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_11.gif
позволила формировать и обрабатывать компактные массивы, содержащие свыше 4-х млрд. элементов.
Расширенный набор Web Operations обеспечивал прямой доступ к данным из среды социальных медиа, существенно ускоряя решение задач класса DataScience.
Расширение возможностей по численному решению дифференциальных уравнений и визуализации их аттракторов, свело на нет воспоминания о возможностях Maple в этой сфере.
Поддержка Image3D и расширенный функционал для работы с изображениями – это просто находка для наших исследований в области приложения DataMining к биомедицинским проблемам.
Система Wolfram Mathematica 9 – стала нашим главным инструментом решения практически всех без исключения научных задач, как прикладных, так и фундаментальных. Объём .m кода создаваемого в Wolfram WorkBench стал стремительно расти.
Заключение
Итак, я надеюсь, что данный пост позволил читателю получить достаточно цельное представление о том, какими шагами мы двигались на этапе освоения постине удивительной программы Wolfram Mathematica. Кроме того, я также надеюсь, что из данного поста стали понятны причины практически “монопольной” ориентации нашей исследовательской группы на эту универсальную и мощную платформу автоматизации интеллектуального труда.
В качестве небольшого отступления. Мотивация к постоянному изучению Wolfram Mathematica – это эволюция, причём как задач, так и самой программы. Синергия этого процесса порождает знание.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Makarenko_Andrej_12.gif
Здесь уместна аналогия. Как известно из истории, первые ЭВМ программировались в машинных кодах, что было достаточно сложной и трудоёмкой задачей. Сильный, качественный прорыв произошёл благодаря разработке первого высокоуровневого языка программирования Фортран в 1954-57 гг. С этого момента взаимодействие человека и компьютера вышло на существенно иной уровень. Возможно сейчас мы наблюдаем следующий виток спирали, в связи с созданием и развитием языка Wolfram.

Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica
При любом использовании материалов блога, ссылка на блог обязательна.
SpikeyСоздано с помощью Wolfram Mathematica 9

3 комментария:

  1. Я стараюсь не создавать себе проблем, а просто звоню специалистам широкого профиля в СТУДИЮ НАУЧНЫХ РАБОТ UNIARTIC, которые решают все мой вопросы в считанные часы, даже и такое бывало, когда мне нужен был реферат. А если, необходима курсовая, тогда в течение дня, они ее предоставят, диплом два дня, причем получила совершенно бесплатно презентацию в формате Power Point и доклад для выступления перед комиссией, и к тому же по акции - ПЛАНШЕТ в подарок! Это реально не развод рекомендую!!!
    http://uniartic.ru/part/research-papers + 7 (499) 686-06-56 Россия, +38 (063)657-99-96 Украина

    ОтветитьУдалить
  2. Математика жесть для меня всегда была. Спасибо проверенным ребятам с Diplomeasy.ru
    Diplomeasy.ru- это сайт для студентов .Фирма по исполнению дипломных и курсовых работ.Мы гарантируем высокое качество оформления и выполнения всех сроков сдачи. Сотрудничество с нами – залог успеха.
    125993 г. Москва, Ст. Петровско-Разумовский проезд, дом 1/23, стр. 1
    E-mail diplomeasy@gmail.com
    Телефон +7 (812) 240-13-43

    ОтветитьУдалить
  3. А, Я заказывала в компании NICEDIPLOM дипломную работу по психологии, выполнили качественно, презентация чудесная, заказывала, чтоб автор с ученой степенью сделал, но, правда, заплатить пришлось чуть дороже, чем за обычный диплом, но это стоило того… защитила на отлично http://nicediplom.ru/

    ОтветитьУдалить