Рассказы пользователей Mathematica
В данном посте публикуются рассказы пользователей и создателей Wolfram Mathematica о том, как они пришли к Mathematica, что делали в ней, свои идеи и планы на будущее, свое отношение к системе, рассказы о том, как она разрабатывалась и разрабатывается.
Если Вы хотите рассказать свою историю, отправьте ее на e-mail: wolfram.mathematica.ru@gmail.com
(к письму приложите также Вашу фотографию и укажите название организации в которой Вы работаете и Вашу должность в ней)
(к письму приложите также Вашу фотографию и укажите название организации в которой Вы работаете и Вашу должность в ней)
АВТОРЫ РАССКАЗОВ:
Максим Сахаров
Сильва Торосян
Роман Осипов
Алик Клименков
Андрей Макаренко
Леонид Шифрин (скоро)
Всеволод Чупрыгин (скоро)
Иван Трусов (скоро)
Максим Сахаров
Сильва Торосян
Роман Осипов
Алик Клименков
Андрей Макаренко
Леонид Шифрин (скоро)
Всеволод Чупрыгин (скоро)
Иван Трусов (скоро)
Максим Сахаров
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, технический консультант компании Softline
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, технический консультант компании Softline
Одно нелинейное уравнение или как я встретил
Стивена Вольфрама
Стивена Вольфрама
Май, 2009. Я, студент второго курса кафедры САПР Московского Государственного Технического Университета имени Н. Э. Баумана, в предвкушении очередной летней сессии. Читался нам предмет, который назывался “Основы САПР”, по сути, представлявший из себя ликбез по CAD/CAE-системам. Курс имел уклон в сторону вычислительной математики и лектора, в особенности, интересовала проблема получения достоверно точного решения систем линейных алгебраических и обыкновенных дифференциальных уравнений в современных CAE системах. Предмет предполагал экзамен, который можно было получить автоматом, однако получить автомат мне, к моему огорчению, не удалось. Не хватило совсем чуть-чуть. Учить и сдавать предмет мне крайне не хотелось, поэтому я написал лектору электронное письмо в котором поинтересовался, что необходимо сделать для того, чтобы получить дополнительные баллы и, как следствие, экзамен автоматом. После непродолжительной переписки я получил письмо следующего содержания.
“мне нужны 32 верных знака для нелинейного уравнения из второй лабораторной - если получите правильно, тогда можно”
Очевидно, что я сразу ухватился за этот шанс. Не обладая, однако, большими знаниями в программировании, я всячески отгонял от себя мысль о том, что придется писать программу на Си или С++. Ах да, совсем забыл, вот это уравнение.
Ведомый желанием решить поставленную задачу с, как можно, меньшими затратами сил и времени я обратился за помощью в сообщество математиков в социальной сети ВКонтакте. Отзывов на свой просьбу я получил достаточно. Однако один из них произвел на меня особое впечатление. Некто Михаил Гуров представил мне сразу тысячу знаков в решении данного уравнения. На мой вопрос о том, какими средствами и методами он пользовался, я получил хорошо известный мне ответ, что существует множество численных методов которые можно запрограммировать самому и точность решения, в данном случае, будет ограничена лишь мощностью компьютера. А то я не знал...
Но затем он написал еще одно сообщение...
“Если ты не программер,скачай себе Mathematica Wolfram Research 7.0 и радуйся жизни (решает все что угодно!!!).”
Я скачал триал-версию ▸▸▸ данного программного продукта и все изменилось...
Спасибо, Михаил! Я не только успешно решил данное уравнение и получил автомат на экзамене, но и нашел, в некотором роде, свое призвание. Юбилей системы Mathematica я отметил на 10 дней раньше положенного срока, когда произошла моя первая и, надеюсь не последняя, встреча со Стивеном Вольфрамом...
И если вы еще не забыли про то самое уравнение, вот оно - решение с точностью в 1000 знаков после запятой...
закрыть
Сильва Торосян
cтарший инженер департамента компьютерных наук факультета точных и естественных наук Тбилисского гос. университета им. И. Джавахишвили
cтарший инженер департамента компьютерных наук факультета точных и естественных наук Тбилисского гос. университета им. И. Джавахишвили
Электроный учебник “Численные методы” в Wolfram Mathematica, или с чего всё начиналось.
Моё первое знакомство с системой Mathematica связано с именем моего научного руководителя Заура Мачаидзе, который к конце 2004 года (тогда я была студенткой 4-го курса Тбилисского гос. педагогического университета им. С.-С. Орбелиани) показал мне эту уникальную систему, начиная с вычисления значения числа π до широких графических возможностей. В 2005 году я защитила дипломную работу на тему: “Электронный учебник - Численные методы”, разработанный в системе Mathematica. Этот электронный учебник включал в себя тестирующую программу по численным методам. Наша цель была показать, что Mathematica не отстаёт от таких языков программирования как Visual Basic и C. Эта разработка заняла III место на республиканской конференции, проведённой академией молодых учёных Грузии.
Разработка этой программы требовала не малого времени и усердия, на что я и моя младшая сестра, в то время тоже студентка физико-математического факультета, посвятили последнии годы студенчества. Нас привлекала простота и ясность самой системы, а особенно её язык программирования, который на наш взгляд, является самым доступным и универсальным. Но несмотря на всё это, сторонников использования системы Mathematica в Грузии почти не было. На сегодняшний день ситуация изменилась, число студентов Тбилисского государственного университета, выбирающих предмет "Возможности системы Mathematica" увеличевается, что меня очень радует.
Ниже я хочу привести один из примеров электронного учебника "Численные методы".
Интерполирование функций
Для функции построить интерполяционный полином Лагранжа.
Построим график этой функции:
Построим график этой функции:
закрыть
Найдём список значений функции по x с шагом 0.6, когда x∈(-3;3):
закрыть
По этим данным построим интерполяционный полином:
закрыть
Изобразим графики полученного полинома и данной функции:
закрыть
Роман Осипов
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, администратор Русскоязычной поддержки Wolfram Mathematica
сертифицированный инструктор технологий и учебных курсов компании Wolfram Research, администратор Русскоязычной поддержки Wolfram Mathematica
Путь от биологии к математике и Mathematica
Мой путь к математике и системе Mathematica был долог, но я очень доволен, что прошел его и иду по нему дальше, так как математика вместе с Mathematica позволяют осуществлять совершенно феноменальные вещи за максимально короткое время с максимальным качеством.
Когда я учился в школе, как бы это странно сейчас не казалось, я не особо любил математику, она казалась мне совершенно непонятной наукой, видимо потому, что школьный учитель не был способен заинтересовать меня ею, показав какие-то красивые вещи и восхитительные приложения математики.
В школе я всерьез увлекался биологией и ходил в Кружок юных натуралистов при Зоологическом музее МГУ им. М. В. Ломоносова ▸▸▸, которым руководил и руководит восхитительный человек и педагог, Дунаев Евгений Анатольевич ▸▸▸. В кружке на протяжении четырех лет мы ездили в разнообразные научные экспедиции от Белого моря до Кавказа и Крыма, изучали зоологию, ботанику, герпетологию, энтомологию и множество других биологических дисциплин, участвовали во множестве олимпиад и соревнований и конечно слушали лекции, как Дунаева Е. А., так и множества других лекторов. При этом цикл лекций в кружке покрывал огромный спектр вопросов, фактически полностью охватывая все занятия на первых двух курсах биологического факультета МГУ им. М. В. Ломоносова.
Естественно, занимаясь настолько много биологией, я хотел поступить на биофак МГУ и продолжить ею заниматься, но, чтобы поступить туда нужно было сдать вступительный экзамен по математике, так исторически сложилось что он шел первым на биофаке и традиционно был достаточно сложным. Поэтому я пошел на курсы, которые посещал около полугода. Курсы вел замечательный преподаватель, который потрясающе решал задачи, меня поразила тогда математическая логика и четкость, когда каждый шаг строг и обоснован, а также удивительная красота стройного математического доказательства или вывода. Тогда я начал решать много задач и каждый день старался брать самые сложные, как мне казалось, которые находил в книгах, например, вступительных вариантов прошлых лет.
Однако, так получилось, что в это же время меня заинтересовала химия, признаться довольно сильно. А так как у меня была золотая медаль, я решил, что разумно иметь подстраховку МГУ и поступил в МИТХТ (Московский государственный университет тонких химических технологий им. М. В. Ломоносова ▸▸▸). У него экзамены были на пару дней раньше, чем в МГУ и он является одним из ведущих химических ВУЗов России (с точки зрения химической технологии — он первый). Поступив туда, на экзамен в МГУ я шел спокойно, так как во-первых я охладел несколько к биологии, а во вторых уже был по сути студентом.
На вступительном экзамене попался вариант, задачи в котором были знакомы по курсам, подход к каждой из них был известен.
Само собой, задачи этого варианта сейчас не кажутся хоть сколь нибудь сложными, а с помощью Mathematica решаются за секунды:
закрыть
закрыть
закрыть
Решив задачи этого варианта, я сдал работу и со спокойной душой пошел домой. Спустя некоторое время я поехал смотреть результаты экзамена. К своему небольшому разочарованию я увидел оценку “4”. Это было удивительно, так как на экзамене я помог соседям справа и слева решить пару задач и в списке у них значилась оценка “5”. Посмотреть работу не удалось, так как на все 600 поступающих дали порядка 15 минут времени на апелляции. Узнав к тому же что те, кому я помог, были “знакомы” с приемной комиссией, я понял окончательно, что биофак это не мое. Я решил заниматься химией.
Все лето я решал огромное количество задач по математике со всевозможных олимпиад и вступительных экзаменов, это было увлекательно и происходило видимо отчасти еще и потому, что мое достоинство было несколько задето тем экзаменом. Также я читал и химическую литературу. И, параллельно, начал работать в моем первом пакете, как бы сейчас это не было странно, это был Mathcad. В нем я порешывал задачи, строил графики, учился программировать.
В сентябре начались занятия в МИТХТ и, само собой, было очень много химии. Химия вначале была неорганическая и наверно именно это сделало свое дело: я перестал видеть логику в химии, так как в неорганической химии крайне важно помнить огромное количество реакций и при разных условиях даже похожие вещества взаимодействуют с одним и тем же третьим веществом по-разному.
К счастью, мои успехи в математике не остались не замеченными в ВУЗе и меня пригласили на втором курсе перевестись в группу, которую учили по специальности “Прикладная математика”, открытую великим ученым и преподавателем, Карташовым Эдуардом Михайловичем ▸▸▸ за год до моего поступления.
Я перевелся и начал изучать математику уже серьезно.
Параллельно я продолжал решать все больше задач в Mathcad и на языках программирования Visual Basic (на нем написал например программу для обработки результатов физико-химического эксперимента длиной порядка 1500 строк), С, Lisp, Prolog.
Всегда при решении задач я чувствовал то, что любому из этих языков не хватает логики, красоты, возможностей, продуманности, изящности.
Однажды, мне потребовалось следующее:
нужно было взять две точки на плоскости и построить половину окружности, диаметром которой служит отрезок, соединяющий эти две точки.
Я реализовал эту задачу в Mathcad и в целом был доволен результатом (см. принтскрин документа Mathcad с решением этой задачи ниже). Это была одна из простейших программ, что я тогда писал в нем и то, как она выглядела, меня не смутило. Но, в душе сидело чувство, что так это не должно решаться. Все должно быть просто и изящно, точно так как все выглядит в величайшей науке — математике.
Однажды, в поисках нового математического софта для себя я встретил название “Wolfram Mathematica”. Подумал, что стоит посмотреть. Когда я запустил эту систему, сначала она показалась мне не особо понятной, так как я привык к другому, плохому, стилю программирования. Но, постепенно я привык и втянулся, так как встроенная документация Documentation Center ▸▸▸ была потрясающе подробной, понятной, логичной, структурированной и она была насыщена реально интересными примерами, чего я не встречал ни у Mathcad, ни у Maple, ни у Matlab. При этом меня поразил дизайн системы и дизайн сайтов компании Wolfram Research ▸▸▸.
После первого знакомства с системой, я решил попробовать написать в ней программу, которая решает туже проблему, что и программа Mathcad ранее.
Сразу бросилось в глаза, что графика в Mathematica векторная и выглядит намного качественее, чем в остальных пакетах. Еще было все что нужно: функция Circle (для построения произвольной окружности или ее дуги), Point (точка на плоскости или в пространстве), а также все необходимые настройки их внешнего вида и функции для поиска расстояний между точками, решения уравнений и пр.
Тогда и был реализован код для решения задачи, который вы видите ниже:
закрыть
Что удивило меня еще больше, так это то, что эту статическую картинку можно легко переделать в динамический объект с помощью функции Manipulate:
закрыть
Как только я сделал это, я понял, что 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) и двигаться только вперед!
Курсовая работа и хороший человек
Мое знакомство с Mathematica произошло в конце весны 2011 года. Это был конец моего II курса в университете и, как полагается, всем студентам дали курсовые работы, которые нужно было выполнить до конца учебного года. К слову сказать, все задания выдали еще в середине зимы, сразу после каникул, но, как и большинство обычных студентов, особо никто не торопился их выполнять. Каждая курсовая работа содержала в себе задачу по аналитической механике — была дана система из нескольких тел, и нужно было определить их движение по заданным параметрам и начальным условиям. Решение задачи сводилось к составлению уравнений Лагранжа второго рода с последующим их решением. Но в то время я не особо понимал, что нужно делать, и, когда сроки сдачи начали поджимать, я не нашел способа умнее, чем попросить у сотрудника кафедры готовую работу с прошлого года. В работе было коротко показано, как выводить уравнения Лагранжа и в конце приводился код численного их решения в Mathematica. Если вывод уравнений с горем пополам еще можно было осилить, то решение уравнений вообще представляло собой один большой знак вопроса, потому что мой опыт программирования был скуден. В работе, которую мне дали, система была немного другой, чем у меня и, следовательно, я должен был переписывать код под свой вариант. Код программы казался мне ужасным, огромным и непонятным. Естественно, я не захотел в нем разбираться. Точно так же обстояло и дело с моим одногруппником, но, в отличие от меня, он все же старался писать код по аналогии с решенной задачей. Но, к сожалению, у него ничего не вышло. Он пошел дальше и стал искать в интернете помощи и нашел форум Русскоязычной поддержки Wolfram Mathematica ▸▸▸, администратором которого является Роман Осипов. Там он задал вопрос такого содержания:
Теперь, с опытом, я могу лишь посмеяться над этим вопросом. Сразу видно, что человек поленился и не пытался разобраться с синтаксисом программы. Но самое интересное не в этом, а в том, что Роман ответил на этот вопрос. И причем не просто ответил, а все красиво разложил по полочкам и написал правильный, работающий код! То, что человек разбирается в чужих задачах и совершенно безвозмездно дает решение — это, несомненно, меня зацепило, потому что я догадывался, что значит делать что-то для других.
Но, несмотря на это, я все же переписывал код с форума, переделывая его под свою задачу. После того, как я удачно сдал курсовую работу, я на время позабыл о Mathematica, но позже я узнал, что здесь можно вычислять разнообразные интегралы, строить графики, решать математические задачи, но самое главное, что код, который выполняет все эти действия, легок для понимания. Сейчас я с уверенностью могу сказать, что основной опыт программирования я получил именно в Mathematica.
P. S. Хочу пожелать Русскоязычной поддержке и лично Роману Осипову терпения, развития и плодотворности. Пусть не каждый человек, который задал вопрос, оценит ответ по достоинству, но все же я благодарен Вам и уверен, что труд Ваш не напрасен.
История освоения Wolfram Mathematica, универсальной и мощной платформы автоматизации интеллектуального труда
Введение
Этот пост, как в общем-то понятно из его названия, про то, как я и мои коллеги осваивали программу Mathematica, и что из этого в итоге вышло. Мотивацией к написанию настоящей заметки послужило три, в общем-то малосвязанных друг с другом, момента.
Во-первых, 02 июля 2013 года, наша научно-исследовательская группа объявила о смене технической политики в области математического моделирования и высокопроизводительных вычислений (подробнее...). И этот пост, в принципе, иллюстрирует и вполне объясняет принятое нами решение, которое при поверхностном взгляде может выглядеть как сильное ограничение.
Во-вторых, 23 июня 2013 года, исполнилось ровно 25 лет постине удивительной программе Wolfram Mathematica. Наше краткое поздравление доступно по ссылке, а настоящую заметку – можно считать его расширенной версией.
В-третьих, в блоге Российского сообщества пользователей системы Mathematica появился минипроект: “Рассказы пользователей Mathematica”. После ознакомления с ним, подумалось, что наша нетривиальная и многоходовая история освоения Wolfram Mathematica, возможно будет интересна читателям и может быть кого-нибудь подвигнет на систематическое изучение и применение этой многогранной и мощной программы.
Данный пост практически не содержит кода и математики и совсем не содержит решения конкретных задач. И причин тому две. Во-первых, заметка и так уже получилась по графомански неприлично объёмной, но как говорится: “из песни слов не выкинешь”. Во-вторых, назначение у данного поста иное, нежели технические подробности, он о пути и идеологии.
Здесь необходимо отметить, что все высказывания и мысли об ограничениях/достоинствах тех или иных программ и/или технологий, приведённые в данной заметке ниже – это есть субъективное мнение её автора.
Этапы освоения Wolfram Mathematica
Путь освоения программы Wolfram Mathematica, как можно будет увидеть ниже, у меня был достаточно извилист и в чём-то тернист, и в нём явно прослеживается несколько основных этапов. Эти вехи кратко представлены на интерактивной диаграмме:
закрыть
Ну а теперь чуть подробнее о каждом из этапов.
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 сделала своё дело... Правда на данном этапе программа использовалась исключительно в режиме последовательного диалога (этакого “умного калькулятора”):
Вычислить производную :
закрыть
Решить дифференциальное уравнение:
закрыть
Решить систему алгебраических уравнений:
закрыть
Взять неопределённый интеграл:
закрыть
Честно говоря, скорость и лёгкость, с которой 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):
Ремарка. Кое где в очень старом коде, который приходится использовать повторно, я всё ещё нахожу монстров в виде 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], после её прочтения “по диагонали” код немного выправился и преобразился:
После книги 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) многоэтапная обработка символьных выражений с ветвлением операций (путей обработки), как в простеньком иллюстративном примере:
закрыть
закрыть
(ii) а также доказательство некоторых утверждений полным перебором вариантов; машинный синтез моделей (формул) по заданным критериям; и решение массы других задач.
2012 г. Версия 9. Главный инструмент.
И вот в конце 2012 года вышла 9-ка. Интеграция с языком R, поддержка цепей Маркова, расширенная поддержка графов – сняла массу ограничений по статистике и по Machine Learning.
Истинная 64-х битная платформа:
закрыть
позволила формировать и обрабатывать компактные массивы, содержащие свыше 4-х млрд. элементов.
Расширенный набор Web Operations обеспечивал прямой доступ к данным из среды социальных медиа, существенно ускоряя решение задач класса DataScience.
Расширение возможностей по численному решению дифференциальных уравнений и визуализации их аттракторов, свело на нет воспоминания о возможностях Maple в этой сфере.
Поддержка Image3D и расширенный функционал для работы с изображениями – это просто находка для наших исследований в области приложения DataMining к биомедицинским проблемам.
Система Wolfram Mathematica 9 – стала нашим главным инструментом решения практически всех без исключения научных задач, как прикладных, так и фундаментальных. Объём .m кода создаваемого в Wolfram WorkBench стал стремительно расти.
Заключение
Итак, я надеюсь, что данный пост позволил читателю получить достаточно цельное представление о том, какими шагами мы двигались на этапе освоения постине удивительной программы Wolfram Mathematica. Кроме того, я также надеюсь, что из данного поста стали понятны причины практически “монопольной” ориентации нашей исследовательской группы на эту универсальную и мощную платформу автоматизации интеллектуального труда.
В качестве небольшого отступления. Мотивация к постоянному изучению Wolfram Mathematica – это эволюция, причём как задач, так и самой программы. Синергия этого процесса порождает знание.
закрыть
Здесь уместна аналогия. Как известно из истории, первые ЭВМ программировались в машинных кодах, что было достаточно сложной и трудоёмкой задачей. Сильный, качественный прорыв произошёл благодаря разработке первого высокоуровневого языка программирования Фортран в 1954-57 гг. С этого момента взаимодействие человека и компьютера вышло на существенно иной уровень. Возможно сейчас мы наблюдаем следующий виток спирали, в связи с созданием и развитием языка Wolfram.
Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica"©
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
Я стараюсь не создавать себе проблем, а просто звоню специалистам широкого профиля в СТУДИЮ НАУЧНЫХ РАБОТ UNIARTIC, которые решают все мой вопросы в считанные часы, даже и такое бывало, когда мне нужен был реферат. А если, необходима курсовая, тогда в течение дня, они ее предоставят, диплом два дня, причем получила совершенно бесплатно презентацию в формате Power Point и доклад для выступления перед комиссией, и к тому же по акции - ПЛАНШЕТ в подарок! Это реально не развод рекомендую!!!
ОтветитьУдалитьhttp://uniartic.ru/part/research-papers + 7 (499) 686-06-56 Россия, +38 (063)657-99-96 Украина
Математика жесть для меня всегда была. Спасибо проверенным ребятам с Diplomeasy.ru
ОтветитьУдалитьDiplomeasy.ru- это сайт для студентов .Фирма по исполнению дипломных и курсовых работ.Мы гарантируем высокое качество оформления и выполнения всех сроков сдачи. Сотрудничество с нами – залог успеха.
125993 г. Москва, Ст. Петровско-Разумовский проезд, дом 1/23, стр. 1
E-mail diplomeasy@gmail.com
Телефон +7 (812) 240-13-43
А, Я заказывала в компании NICEDIPLOM дипломную работу по психологии, выполнили качественно, презентация чудесная, заказывала, чтоб автор с ученой степенью сделал, но, правда, заплатить пришлось чуть дороже, чем за обычный диплом, но это стоило того… защитила на отлично http://nicediplom.ru/
ОтветитьУдалить