wolfram mathematica что это

Wolfram mathematica что это

Wolfram Mathematica (WM) является пакетом символьной математики. Огромное количество заложенных разработчиками функций, а также открытая среда, позволяющая дополнять пакет своими собственными расширениями делает его возможности воистину безграничными. Mathematica имеет высокую скорость и практически не ограниченную точность вычислений, что позволяет ей работать как на очень мощных компьютерах, так и не очень сильных персональных компьютерах. На основе ядра пакета имеется Web-сервер, который позволяет пользоваться ее возможностями неограниченному числу людей.

Часто основыми конкурентами пакета называют Maple, MathCAD и MatLab. Если с первым сложно поспорить, то насчет MathCAD и MatLab можно. Дело в том, что эти два пакета занимают совсем другую нишу, нежели Mathematica. Оба при вычислении используют численные алгоритмы, а не символьные. Символьные вычисления являются слабо развитыми (по сравнению c пакетами символьных вычислений) дополнениями. Гораздо более похожим продуктом является бесплатно распространяемый пакет Maxima.

Основы интерфейса

Рассмотрим основные понятия Mathematica. После установки пакета в главном меню создаются ярлыки на два файла: Mathematica и Mathematica Kernel. Дело в том, что ярлык Mathematica Kernel запускает ядро пакета, которое производит все вычисления, а ярлык Mathematica запускает интерфейсную часть пакета.

Интерфейс пакета строится из нескольких базовых понятий: Тетрадь (Notebooks), Ячейка (Cell) и Палитра (Palletes). Тетрадью называется файл, с которым работает пользователь. В нем создаются и вычисляются формулы, строятся графики и таблицы. При желании, в тетради можно даже проиграть звуковой файл или фильм.

Для быстрого доступа к функциям, разработчики Mathematica ввели специальные типы окон, которые называются палитрами. Палитры содержат окна с кнопками, которые выполняют действия. Действия могут быть соврешенно различными: от добавления греческой буквы, до раскрытия скобок в алгебраическом выражение. Различные палитры доступны через меню File-Palletes. Приложение приведена функциональность нескольких палитр.

Ввод данных осуществляется в ячейки. Пакет поддерживает кириллицу и греческие буквы наравне с английским алфавитом. Вы можете смело называть переменные русскими буквами, также как и греческими. В то же время, идентификаторы различаются по регистру, т.е. переменная A не то же, что переменная a. Для такого ввода индекса можно воспользоваться палитрой Basic Input. С помощью нее также можно ввести шаблоны операций (таких как сумма, умножение, корень) и греческие буквы. Другие символы можно найти на палитре Basic Typesettings. Полный список всех символов, которые знает Mathematica, можно найти на палитре Complete Charecters. Чтобы ввести символ, нужно нажать на кнопку с его изображением.

Палитры, кроме прямого ввода символа, также имеют очень полезное свойство показывать в внизу своего окна ESC-комбинацию символа.

Wolfram Mathematica имеет развитые средства форматирования текста. С помощью их можно разбивать тетрадь на главы и разделы, вводить поясняющий текст и т.д. Обычно стиль задается всей ячейке целиком, хотя никто не мешает Вам использовать такое форматирование как курсив и полужирное начертание внутри ячейки.

Для того, чтобы задать стиль ячейки, ее необходимо сначала выделить (щелкнув левой кнопкой мышки по синей полоске справа от ячейки). Затем через меню Format->Style выбрать нужный стиль, например заголовок. Если указывать стили вроде раздела или заголовка, то следующие ячейки будут вложены в эту ячейку. Закрыв ее (двойным щелчком мыши по синий полоске), они спрячутся с экрана. Следующий заголовок начнет новую группу ячеек.

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

Из стандартных стилей ячеек, хотелось бы отметить два. Первый, Text, служит для ввода текста. Он использует шрифт с засечками (в стиле по умолчанию, это Times New Roman) и ячейка становиться не вычисляемой. Второй стиль называется Display Formula, и позволяет вводить более изящные формулы, чем Input (который используется по умолчанию).

Сравните, к примеру две формулы:

InputDisplay Formula
Sin(2x) = 2Cos(x) Sin(x)Sin(2x) = 2Cos(x) Sin(x)

Конечно Display Formula, это не TEX, и даже не MS Equation, но смотрится по-лучше, чем Input.

Наконец, мы добрались до самого главного — вычислений. Основой вычислений в Mathematica являются переменные. Для того чтобы объявить переменную, достаточно просто написать ее имя. Для того, чтобы что-либо положить в переменную, используется операция присвоения. В следующем примере в переменную а будет положено значение 2.

Теперь, если запустить расчет ячейки (с помощью комбинации клавиш SHIFT+ENTER, или с помощью клавиши ENTER на дополнительной клавиатуре (калькуляторе), или с помощью меню Kernel->Evalution, Evalute Cells) Mathematica создаст ячейку результат и выведет туда значение переменной а.

В предыдущем примере было показано явное присвоение, бывает также отложенное присвоение, которое задается строкой :=. Разницу лучше всего показать на примере:

Теперь а содержит 3, а b содержит 2. Обратите внимание, что Mathematica создала 3 ячейки результата, по одной на каждое выполнение действие. Запретить создание ячейки результата можно, если после действия поставить знак ;.

Теперь проделаем то же самое, заменим вторую операцию на явное присвоение:

Во-первых, теперь создались только 2 ячейки, для первого и третьего присвоения. Теперь a по прежнему содержит 3, а вот b не содержит никакого значения. Когда мы попробуем обратиться к ней, нам вернется текущее значение a. Например, в предыдущем примере запись b + 2 выдаст 4, а в этом случае — 5.

Переменные можно обрабатывать с помощью функций. Самый простой способ применить функцию, это вызвать ее с помощью палитры AlgebraicManipulation. Для этого формула, к которой требуется применить функцию, должна быть выделена. Результат функции заменит выделенную формулу. Так, если написать формулу

и применить функцию Expand (разложить), мы получим

если же к полученному применить команду Factor (разложить на множители), мы получим исходную формулу. В приложение эта палитра рассмотрена более подробно.

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Источник

Wolfram Language (Mathematica) — это просто игрушка

Я засомневался в своей точке зрения, см. подробнее в одном из UPD.

Хочу поговорить о Wolfram Language (далее WL). Прошу прощения за сумбурность изложения, пост вырос из попытки ответить на этот коммент от Nilis.

WL — это всё-таки узкоспециальный язык. Просто Wolfram решил подзаработать денег, и для этого стал продвигать свой WL ещё и как язык общего назначения. Если вам понравился именно WL — значит, вы просто ещё не познали другие языки. Также замечу, что WL — это не свободное ПО, в отличие от кучи других языков, включая тот же питон.

Лет 6-10 назад, когда я учился в школе, я знал лишь BASIC, Pascal/Delphi, C/C++ и WL. Из ОС имел дело лишь с Windows. Не знал, что такое скриптовые языки (perl, python, bash), не знал самого понятия «скрипт». Думал, что командный интерфейс — это устаревший интерфейс и что единственный правильный интерфейс программы — это графический. Программировал я на Delphi и WL. Программы на Delphi всегда были графическими. За исключением олимпиадного программирования, там в требованиях к программам было, что они должны быть текстовыми, я их писал на Delphi и C++. Когда я узнал о WL, я был им очарован, также как и вы. Потому что код на WL был гораздо короче, чем на Delphi/C++. И вообще, потому что WL был совершенно не похож на Delphi и C++. Потому что там была возможность программировать функционально. Я познакомился с функциональным программированием на примере WL, я не знал, что существуют «стандартные» функциональные языки — Haskell, Lisp и ML.

Когда мне нужно было написать программу для каких-нибудь манипуляций с файлами, я писал её на Delphi. Причём с гуём. Писал окошки, кнопочки. Поля «введите папку, с которой будете работать» и т. д. Я не понимал, что это можно было сделать однострочником на баше.

У меня появилась идея написать файловый менеджер для Windows (разумеется, для Windows, других ОС я не знал), в котором была бы возможность скриптинга на WL (при этом слова «скриптинг» я не знал). Чтобы там, скажем, была функция Flatten из WL, которая бы делала Flatten для папок, т. е. уничтожала всю иерархию папок внутри данной папки и просто сваливала бы все файлы в кучу.

Потом, 6 лет назад я поступил в университет, познакомился с GNU/Linux, начал программировать на C/C++ и bash под GNU/Linux. Я понял, что всё моё программирование на Delphi и WL (кроме математики) — ерунда. Что все мои программы на Delphi можно было реализовать однострочниками на баше. А WL нужно использовать только для математических задач. Я понял, что командный интерфейс — не устаревший. И понял, что та идея файлового менеджера — ерунда. Потому что весь GNU/Linux в целом представляет собой такой файловый менеджер (а заодно и IDE) с возможностью скриптинга на всех скриптовых языках.

Богачёв помимо своей преподавательской деятельности работает в одной фирме техническим директором, и я там у него работал. Мы там делали симулятор месторождения нефти, я думаю, не нужно пояснять, что деньги в этой области крутятся огромные. Так вот, симулятор написан на C++, в том числе код, выполняющий расчёты (решение диффуров и систем линейных уравнений). И разумеется, не на WL, потому что нет нужного быстродействия, нет должного доверия к этому WL, и вообще WL здесь было бы использовать несерьёзно.

Затем я познакомился с формальной математикой, в том числе с системой Isabelle. Так вот, я вам скажу, что формальная математика — это единственный способ проводить математические манипуляции на компьютере так, чтобы быть уверенным в их математической правильности. И всех этих косяков с Simplify, Solve и т. д. в формальной математике нет.

Но такие системы (т. е. системы для работы с формальной математикой) не похожи на WL. Работа с ними происходит так: вы вводите в систему формальное доказательство, а она вам говорит, правильное оно, или нет. Возникает вопрос: можно ли смешать способ работы WL с правильностью формальной математики? Да, можно.

Mathematica, Maple и т. д. относятся к так называемым системам компьютерной алгебры. Так вот, все такие системы грешат отсутствием математической строгости. В связи с этим существует идея написания по-настоящему правильной системы компьютерной алгебры, основанной на формальной математике. Вот здесь специалисты в формальной математике показывают результаты первых экспериментов в этом направлении: www.cs.ru.nl/

freek/pubs/holcas.pdf, прочитайте, пожалуйста, хотя бы первые две страницы.

Итак, по поводу математики на WL: если нужно по-быстрому построить график, вычислить производную и т. д. — юзайте WL. Если серьёзные математические вычисления — пишите код сами на языках общего назначения (типа C++), как это делает Богачёв, либо используйте профессиональные библиотеки, опять-таки для языков общего назначения. Если нужно проводить математические манипуляции, которые не являются вычислением, т. е. не являются численными — то делайте ваши манипуляции вручную, либо с использованием формальной математики (например, Isabelle), либо с использованием формальных систем компьютерной алгебры, например, представленной в статье выше (правда, такие системы на данный момент находятся на начальной стадии развития).

Для нематематических задач WL использовать вообще нельзя. Используйте любой другой язык, в том числе скриптовый. Если вам нравится WL, то посмотрите на функциональные языки. В частности, посмотрите на Lisp, именно на него WL больше всего похож.

Итог. WL — это просто игрушка. Это инструмент студента, но не учёного. Вряд ли, скажем, данные с Большого андронного коллайдера обсчитываются на WL. WL как 1С: плохой, узкоспециализированный, коммерческий, несвободный язык.

Если что-то заинтересовало в этом посте (формальная математика, функциональное программирование, и т. д.), спрашивайте, я отвечу.

UPD от 22 июля 2015 г. Ещё немного про схожесть WL и Lisp, а именно про принцип «программа — это данные»: habrahabr.ru/post/263015/#comment_8506389.

Немного про области, где можно применять WL и про заголовок этого поста. Мне не нравится, что есть много людей, которые серьёзно воспринимают WL. Т. е. которые воспринимают его как инструмент, который может играть главную роль в научном исследовании, или, того хуже, как язык общего назначения. Людей, которые очарованы достоинствами WL (как я в своё время), и не знают, что, скажем, WL — это далеко не единственный функциональный язык программирования. Которые не знают, что вообще-то есть скриптовые языки программирования (Perl, Python, Bash) и что есть функциональные, с которых этот WL содран (Lisp, Haskell, ML). Так вот, чтобы раскрыть этим людям глаза, я и написал свой пост. И чтобы быть максимально убедительным, я использовал кричащий заголовок («WL — игрушка»). Я, конечно, понимаю, что WL всё-таки имеет свою область применения. Он нужен для создания прототипов, для того чтобы по-быстрому найти производную и т. д., для того, чтобы провести некие расчёты там, где ошибки не критичны (скажем, при выполнении домашних заданий в вузе и написании курсовых), для того, чтобы провести некие расчёты, которые будут потом проверены другим, более надёжным способом. Мой коммент на эту тему: habrahabr.ru/post/263015/#comment_8506387.

Мой коммент про численные и аналитические задачи: habrahabr.ru/post/263015/#comment_8507849.

Про кучу подробностей из моей жизни и Windows vs GNU/Linux. Я написал про GNU/Linux и т. д. не потому, что я хотел сказать, что GNU/Linux лучше Windows, а гуй лучше текстового интерфейса. И про Богачёва я написал не для того, чтобы его пропиарить. Просто я хотел немного рассказать о своей жизни, чтобы сделать мой рассказ более убедительным, чтобы было понятно, как менялись мои представления. И я не считаю, что GNU/Linux сильно превосходит Windows в техническом плане. И я понимаю, что GUI и CLI — это просто два разных интерфейса со своими применениями.

Про свободное ПО. Конкретно в случае WL его несвободность является существенным минусом, т. к. понижает доверие к полученным результатам.

Пример был приведён в разделе Possible Issues, вообще, я вам скажу, это отличное место, где можно искать всякие нелогичности WL. Далее, берём пример из статьи выше (про формальную математику) и переносим его из Maple в WL, немного изменив:

У меня сильное подозрение, что ответ, полученный NIntegrate[. ], правильный, а N[Integrate[. ]] — нет. Т. к. NIntegrate выполнил внутри себя простой тупой алгоритм численного дифференцирования. В отличие от Integrate, который представляет собой неведомого монстра алгебраических манипуляций без формальной строгости, подверженного ошибкам. Окончательно я поверю, что один из этих результатов правильный, только если самостоятельно напишу программу на C/C++, которая будет численно интегрировать. Либо если найду (или, как минимум, проверю) этот интеграл на бумажке. (А ещё этот интеграл, очевидно, должен быть действительным.)

И, наконец, я засомневался в своей позиции, вы на меня повлияли, господа комментаторы. Возможно (возможно!), WL действительно качественный продукт, пригодный для серьёзных научных и прочих применений. При этом я не меняю своё мнение на противоположное, окончательно решить для себя, хороший WL или нет, я смогу только хорошенько его поиспользовав, но этого я делать сейчас не хочу.

И всё же добавлю: если вы хотите получать достоверные результаты на WL, вам нужно уметь его использовать (впрочем, то же самое относится к любой другой технологии). Например, понимать, как на WL происходит работа со всякими частными случаями вроде нулевого знаменателя (см. примеры в этом посте выше). Далее, важно понимать, что WL — это высокоуровневый язык, что работать с математикой на компьютере можно и с помощью низкоуровневых языков (вроде C++) тоже. И наконец, важно знать, что WL — это не единственный язык, позволяющий писать относительно сжатый код, что существуют скриптовые языки (Perl, Python, Bash). И что WL — не единственный язык, поддерживающий функциональное программирование, что существуют Lisp, ML и Haskell.

Я люблю Хабр, Хабр покажет тебе, насколько ты не прав! 🙂

Приведённые примеры были на Mathematica 10.0.2.

UPD от 26 июля 2015 г. Как правильно заметили тут, «почти вся ценность этого поста в комментариях». 🙂

Источник

Wolfram Mathematica

Потому что принципы важны.

Более трёх десятилетий развития на базе смелых дизайн-принципов сделали систему Mathematica наиболее мощной вычислительной платформой в мире.

Автоматизация

Автоматизация является ключом к продуктивным вычислениям. В отличие от других систем Mathematica применяет разумную автоматизацию во всех её частях, от выбора алгоритма до расположения графиков и построения пользовательских интерфейсов. В итоге вы получаете высококачественные результаты без необходимости глубоких алгоритмических знаний, и даже в случае экспертного использования, результат будет получен быстрее.

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Автоматизация в вычислениях

Преимущества wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Контроль и отслеживание точности

Функции целевой ориентации

Надежные результаты без анализа ошибок округлений

Использование недостоверных результатов (или выполнение анализа вручную)

Пониженная производительность (необходимость ручной оптимизации)

Использование плохо подходящих или общих алгоритмов

Программы, усложнённые алгоритмическими деталями

Необходимость помнить разные функции для разных типов данных

Автоматизация в визуализации

Преимущества wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Обнаружение характерных особенностей

Корректная визуализация ключевых особенностей функций

Сочетание текста, изображений, таблиц и средств управления

Ручное указание цветов, штрихов на осях и пр.

Ручное указание диапазонов построения графика, расположения и пр.

Неправильное отображение скачков, разрезов и пр.

Пропущенные детали (или избыточное вычисление значений функций)

Ручное программирование интерактивных элементов (или отказ от их использования)

Построение только простых графиков (или использование дополнительных программ)

Автоматизация в разработке

Преимущества wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Свободная форма языкового ввода

Создание пользовательских интерфейсов

Перевод текста, заданного в свободной форме в точные команды

По существу платформенно-независимые приложения

Оптимизированные выделение, отслеживание и освобождение памяти

Ручное программирование всех аспектов пользовательских интерфейсов

Ограничения по развёртыванию (или ручное портирование для каждой платформы)

Ручное выделение и отслеживание памяти

Распараллеливание вручную (инициализация, обмен информацией и пр.)

Интегрированная универсальная платформа

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

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Преимуществаwolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Беспрепятственный процесс перехода от идеи до развертывания

Приобретение единой технической платформы

Изучение только одной технической платформы

Работа с идеями, охватывающими различные технические области

Изменение инструментария и форматов на каждом этапе

Регулярная потребность в дорогостоящих дополнительных тулбоксах

Изучение многих специализированных программ узкого применения

Ограничение творчества встроенными функциональными возможностями

Гибридная символьно-численная методология

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

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Преимуществаwolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Получение точных, общих результатов там, где это возможно

Получения только численных ответов, часто в ущерб пониманию

Использование недостоверных результатов (или анализ ошибок округления вручную)

Использование менее эффективных общих методов

Мультипарадигмальный язык

Ни один стиль программирования не подходит идеально для всех задач. Система Mathematica отличается от традиционных языков программирования одновременной поддержкой множества программных парадигм: процедурной, функциональной, основанной на правилах или шаблонах и других.

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Преимуществаwolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Программируйте так, как думаете

Используйте лучшее сочетание методик для решаемой задачи

Рассуждайте по-разному, в зависимости от используемой платформы

Действуйте в рамках одной парадигмы, независимо от её пригодности

Встроенная информация

Операции поиска по стандартным базам данных и их обновление не должны нарушать ваш рабочий процесс. Система Mathematica выгодно отличается от других платформ для технических вычислений тем, что включает обширные коллекции тщательно выверенных данных самых разных типов, которые постоянно обновляются и расширяются.

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Преимуществаwolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Автоматическое обновление данных

Практически удобный доступ к стандартным данным

Используйте в работе труднодоступные стандартные данные

Импортируйте, проверяйте и реорганизовывайте данные вручную

Периодическое обращение к первоисточникам для обновлений и исправлений

Отрыв от рабочего процесса для получения данных

Проведение анализа с более ограниченными наборами данных

Рабочий процесс на базе документов

У вас не должна возникать необходимость пользоваться одной программой для обработки данных, другой для их визуализации, а третьей для их интерактивного преподнесения. Система Mathematica всё это осуществляет в течение рабочего процесса, сохраняя все элементы проекта—вычисления, визуализации, данные, документацию, и даже интерактивные приложения—вместе, в уникально гибких документах.

wolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Преимуществаwolfram mathematica что это. Смотреть фото wolfram mathematica что это. Смотреть картинку wolfram mathematica что это. Картинка про wolfram mathematica что это. Фото wolfram mathematica что это

Держите все составляющие проекта вместе

Создавайте сопровождающую документацию во время работы

Легко изменяйте назначение документов для публикации в интернете, для печати, для проведения презентации или создания приложений

Сохраняйте данные, формулы, тексты, коды, результаты, графики и приложения в виде отдельных файлов и форматах

Утрата промежуточных шагов, ведущая к усложнению воспроизводимости результатов

Графика и другие элементы должны быть статическими, а не интерактивными

Начинайте с начала при подготовке документа для распространения новым способом

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *