Что такое mathematica

REDMOND

Mathematica

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

Содержание

Возможности

Аналитические преобразования

  • Решение систем полиномиальных и тригонометрическихуравнений и неравенств, а также трансцендентных уравнений, сводящихся к ним.
  • Решение рекуррентных уравнений.
  • Упрощение выражения.
  • Нахождение пределов. и дифференцирование функций.
  • Нахождение конечных и бесконечных сумм и произведений.
  • Решение дифференциальных уравнений и уравнений в частных производных.
  • Преобразования Фурье и Лапласа, а также Z-преобразование
  • Преобразование функции в ряд Тейлора, операции с рядами Тейлора: сложение, умножение, композиция, получение обратной функции и т. д.
  • Вейвлет-анализ

Численные расчёты

  • Вычисление значений функций, в том числе специальных, с произвольной точностью.
  • Решение систем уравнений.
  • Нахождение пределов.
  • Интегрирование и дифференцирование.
  • Нахождение сумм и произведений.
  • Решение дифференциальных уравнений и уравнений в частных производных.
  • Полиномиальная интерполяция функции от произвольного числа аргументов по набору известных значений.
  • Преобразования Фурье и Лапласа, а также Z-преобразование.

Теория чисел

  • Определение простого числа по его порядковому номеру, определение количества простых чисел, не превосходящих данное.
  • Дискретное преобразование Фурье
  • Разложение числа на простые множители, нахождение НОД и НОК.

Линейная алгебра

  • Операции с матрицами: сложение, умножение, нахождение обратной матрицы, умножение на вектор, вычисление экспоненты, получение определителя.
  • Поиск собственных значений и собственных векторов.

Графика и звук

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

Разработка программного обеспечения

  • Автоматическое генерирование С кода и его компоновка.
  • Автоматическое преобразование компилируемых программ системы Mathematica в C код для автономного или интегрированного использования.
  • Использование SymbolicC для создания, обработки и оптимизации С кода.
  • Интеграция внешних динамических библиотек
  • Поддержка CUDA и OpenCL.

Язык программирования Mathematica

Кроме того, Mathematica это интерпретируемый язык функционального программирования. Можно сказать, что система Mathematica написана на языке Mathematica, хотя некоторые функции, особенно относящиеся к линейной алгебре, в целях оптимизации были написаны на языке C.

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

История версий

  • Первый выпуск Mathematica.
  • Интерфейс под Macintosh.
  • Поддержка удалённых ядер.
  • Заметно улучшено символьное интегрирование.
  • Возможность решать элементарные дифференциальные уравнения посредством функции DSolve.
  • Решение трансцендентных и других уравнений, которые требуют явного использования обратных функций.
  • Точные интерполяционные многочлены.
  • Добавлены функции LinearProgramming, ConstrainedMax и ConstrainedMin.
  • Добавлены матричные функции MatrixPower (возведение квадратной матрицы в степень) и MatrixExp (экспонента от матрицы).
  • Добавлен базис Грёбнера.
  • Добавлены опции Modulus вычисления по модулю функций Det, Inverse и LinearSolve.
  • Добавлены стандартные пакеты Statistics и Graphics.
  • Много новых графических опций и свойств, включая axes (оси) и labels (заголовки) для 3-х мерной графики.
  • Значительно улучшена эффективность нахождения НОД (наибольшего общего делителя) факторизация многочленов.
  • Численное решение обыкновенных дифференциальных уравнений.
  • Численный компилятор.
  • Улучшения в линейной алгебре.
  • Реализация алгоритма Риша для функции Integrate (интегрирование).
  • Символьное решение обыкновенных дифференциальных уравнений. расширены на многие специальные функции.
  • Добавлен ParametricPlot3D.
  • Множество дополнительных средств оформления графики.
  • Улучшено исключение невидимых поверхностей для 3-х мерной графики.
  • Множество операций над строками и файлами.
  • Протокол MathLink межпроцессного и сетевого взаимодействия.
  • Поддержка звука.
  • Поддержка наборов букв не только латинского алфавита.
  • Обнаружение ошибок и отладка программы.
  • Notebook интерфейс.
  • Обновлён алгоритм построения контурных графиков.
  • Улучшения MathLink и документации под Unix.
  • MathLink под Macintosh.
  • Анимация QuickTime для Macintosh-версии.
  • Поддержка Windows 3.1.
  • Облегчённая версия инсталляции для Unix и PC для уменьшения расхода памяти.
  • Новые пакеты добавлены в таких областях, как нелинейная аппроксимация, операции с двоичными файлами, дельта-функции Дирака и синтез звука.
  • Внешний интерфейс под Windows с новыми командами по управлению файлами Mathematica.
  • Отдельный внешний интерфейс в Macintosh.
  • Внешний интерфейс для X Windows.
  • MathLink под Windows.
  • Версия для Linux.
  • Добавлена возможность построения кривых уровня.
  • Пакет для символьных решений дифференциальных уравнений первого порядка.
  • Добавлено 10 других пакетов в таких областях как 3-х мерное построение контурных графиков, вариационное исчисление и музыка.
  • Новые свойства справки, включай онлайновые руководства для X Windows и браузер функций для Macintosh и NeXT.
  • Более быстрые решения для разреженных систем линейных уравнений.
  • Символьное вычисление определённых интегралов расширено, включая проверку на наличие неинтегрируемых сингулярностей и разрезов функций с точками ветвления в интервале интегрирования.
  • Интерактивная система математического набора.
  • Алгебраические числа.
  • Компилятор Mathematica расширен для работы с массивами машинных чисел.
  • Поддержка нелинейного метода наименьших квадратов посредством техники Левенберга-Маргуардта.
  • Улучшена интерполяция (важно для нахождения результата численных обыкновенных дифференциальных уравнений).
  • Интервальная арифметика.
  • Новые функции для упрощения и преобразования выражений.
  • Оптимизированные функции базиса Грёбнера.
  • Много новых специальных функций.
  • Программирование обмена данными, основанное на исключениях.
  • Широкие улучшения в скорости и эффективности численных вычислений.
  • Публикация документов в ряд форматов. и автоматический перенос слов.
  • Прямой импорт и экспорт в более чем 20 форматов графических, звуковых файлов и файлов стандартных данных.
  • Расширен набор и произведены улучшения функций для анализа данных, включая корреляцию, конволюцию и новый алгоритм преобразований Фурье.
  • Поддержка проведения вычислений в специфических алгебраических областях.
  • Сетевое управление лицензией доступно на всех платформах.
  • Улучшения во многих встроенных функциях Mathematica.
  • Весия для Macintosh OS X.
  • Значительно улучшено решение символьных дифференциальных уравнений.
  • Улучшены соправитель и компилятор Mathematica, увеличивая скорость и уменьшая потребление памяти.
  • Новый стандартный пакет для интегрирования по областям, определённым неравенствами и интегрирования кусочных функций.
  • Значительные улучшения в статистических функциях.
  • Преобразования между линейными системами уравнений и матрицами.
  • Интеграция Java посредством J/Link 1.1.
  • Улучшена интеграция с MathML.
  • Поддержка сохранения в формат IBM techexplorer.
  • Новые и более быстрые фильтры импорта и экспорта для файлов Excel, табличных данных и сжатых BMP, DXF и STL.
  • Поддержка управления в реальном времени 3-х мерной графикой под Linux и Unix.
  • Поддержка звука под X.
  • Методы для построения графиков, определённых неравенствами.
  • Поддержка PowerPC Linux и AlphaLinux.
  • Пакет дискретной тригонометрии.
  • Улучшения внешнего интерфейса в X.
  • Более прозрачная интеграция Java посредством J/Link 2.0 и встроенная Java Runtime Engine.
  • Улучшены линейное программирование и оптимизация.
  • Улучшения скорости и надёжности многих численных функций.
  • Улучшенное упрощение выражений.
  • Улучшения статистических функций, включая пакет ANOVA.
  • Включён новый пакет Combinatorica для комбинаторики и теории графов.
  • Включён новый пакет AuthorTools для технических публикаций.
  • Окружение слайд-шоу для презентаций.
  • Новые форматы импорта и экспорта, включающие FITS и STDS. -расширения, которые позволяют сохранять файлы и выражения Mathematica как XML.
  • Включён новый пакет XML средств для символьных манипуляций XML.
  • Поддержка экспорта в XHTML, включая таблицы стилей.
  • Расширенная поддержка MathML 2.0.
    функции линейной алгебры.

  • Полная поддержка высокоскоростной линейной алгебрыразреженных матриц.
  • Новое поколение оптимизированных функций для численного решения обыкновенных дифференциальных уравнений и уравнений в частных производных.
  • Новые специализированные алгоритмы для символьного решения уравнений и неравенств в различных областях.
  • Полностью интегрированная функция для дифференциальных алгебраических уравнений.
  • Высокопроизводительная оптимизация и линейное программирование, включая метод внутренней точки.
  • Более общие функции численного решения уравнений расширены на векторные и матричные функции.
  • Улучшенная функция для решения рекуррентных уравнений.
  • Более широкая поддержка assumptions (ограничений на переменные) для символьных вычислений.
  • Включена .NET/Link, обеспечивающая полную интеграцию с Microsoft’s .NET Framework.
  • Гибкий импорт и экспорт форматов DICOM, PNG, SVG и разреженных матриц.
  • Оптимизированные версии для 64-битного оборудования и операционных систем.
  • Добавлен новый интерактивный учебник.
  • Мощное управление строками.
  • Встроенная подключаемость к универсальной базе данных.
  • Высоко оптимизированный ввод/вывод двоичных данных.
  • Дополнительные импортируемые и экспортируемые форматы, включая XLS и AVI.
  • Интегрированная поддержка веб-сервисов.
  • Автоматизированная визуализация 2-х и 3-х мерных сетей.
  • Высокопроизводительная визуализация массивов.
  • Прирост производительности численных функций линейной алгебры.
  • Полностью интегрированы кусочные функции.
  • Интегрирование по областям, заданным неявно.
  • Обработка событий в численных дифференциальных уравнениях.
  • Новые алгоритмы для символьных дифференциальных уравнений.
  • Добавлены возможности кластерного анализа.
  • Интерактивное средство исследования дифференциальных уравнений.
  • Средство установки контрольных точек MathematicaMark.
  • Интерфейс GUIKit и встроенный разработчик программ.
  • Поддержка 64-битной адресации на всех платформах.
  • Поддержка многоядерности на основных платформах. численная линейная алгебра.
  • 64-битное расширение чисел с произвольной точностью.
  • Улучшения производительности вычислений, основанных на векторах.
  • Автоматический выбор двоичной установки.
  • Объединённое индексирование файлов Mathematica для поиска на компьютере.
  • Поддержка SSH для безопасных удалённых ядер.
  • Импорт vCard и RSS.
  • Новые алгоритмы для символьных дифференциальных уравнений.
  • Прирост производительности для систем линейных диофантовых уравнений.
  • Улучшена квадратичная элиминация кванторов.
  • Поддержка сингулярного случая высокоуровневых специальных функций.
  • Усовершенствованы статистические диаграммы.
  • MathematicaMark 5.2 теперь работает с grid и кластерами.
  • Динамическая интерактивность, позволяющая создавать сложные динамические интерфейсы одной строчкой.
  • Эффектная настраиваемая визуализация для автоматического создания высококачественных графиков функций и данных.
  • Язык для интеграции данных, включая автоматическую интеграцию сотен стандартных форматов данных.
  • Загрузка по запросу данных по математике, физике, химии, финансовому делу, лингвистике и т. д.
  • Конструкция символьного интерфейса для немедленного создания произвольных интерфейсов посредством простых программ.
  • Автоматизированная вычислительная эстетика с алгоритмической оптимизацией для визуального представления.
  • Объединение активных графиков и элементов управления с поточным текстом и вводом.
  • Расширены автоматические и ручные настройки прокси-сервера для соединения с интернетом.
  • Более полная документация по функциям Mathematica, унаследованным из более ранних версий.
  • Значительно улучшена производительность MathLink на Mac и Unix системах.
  • Улучшена производительность различных конвертеров в функциях Import и Export.
  • Более быстрая работа ListPlot, ListPlot3D и Plot3D для большого числа точек.
  • Улучшено исходное окно системы справки.
  • Расширения для автоматического определения формата файла для функции Import.
  • Полная поддержка масштабных значений FontSize.
  • Улучшения в импорте Table, CSV, TSV и MathML.
  • Добавлены пункт меню Evaluate Notebook и подменю Magnification.
  • Дополнительные пример применения функций Mathematica и учебные руководства.
  • Обновления поддерживаемых данных.
  • Новая документация Virtual Book с обновлённым содержанием Mathematica Book.
  • Новый Function Navigator (навигатор функций), простой просматриваемый обзор всех объектов Mathematica.
  • Несколько дополнительных улучшений документации, включая прирост производительности, индексирование и систему ссылок.
  • Полная 64-битная производительность на Intel Mac.
  • Улучшенная производительность конвертеров Import и Export на Mac и Unix.
  • Значительное ускорение импорта файлов двоичных данных.
  • Улучшено поведение графики при экспорте в TeX и PDF.
  • Улучшенный импорт метаданных из файлов астрономических изображений FITS.
  • Новый инструмент выбора координаты и усовершенствованная подсветка графических выборов для интерактивных графиков.
  • Полный список стандартных дополнительных пакетов добавлен в Documentation Center (систему справки Mathematica).
  • Улучшения в документации пакетов.
  • Улучшенное обращение с опциями для MatrixForm и TableForm.
  • Повышенна стабильность внешнего интерфейса с Manipulate содержащим выбранный график.
  • Улучшено обращение с опциями для ListPlot.
  • Улучшено обращение с комбинациями AxesLabel и Ticks.
  • Улучшено обращение с числовыми данными без пробелов в импорте Protein Data Bank (PDB).
  • Изменена обмотка при экспорте в LightWave Object (LWO) для более близкого соответствия производственным стандартам.
  • Улучшена интерактивность под Linux с композитными менеджерами окон, такими как Compiz.
  • Улучшено поведение внешнего интерфейса в Ubuntu Hardy и Fedora Core 9.
  • Встроенная поддержка параллельных высокопроизводительных вычислений.
  • Интегрированная обработка изображений.
  • Поддержка новых запрашиваемых данных, включая геномные данные, данные о белках и данные о текущей и прошедшей погоде.
  • Построение диаграмм и визуализация информации.
  • Визуализация векторных полей.
  • Полная поддержка сплайнов, включая NURBS.
  • Мощные двоичные вычисления.
  • Анализ статистических моделей.
  • Интегрированные геодезические и GIS данные.
  • Множество улучшений в символьных вычислениях, в том числе в дискретной математике, распознавании последовательностей и работе с трансцендентными корнями.
  • Прирост производительности функций обработки изображений ядра.
  • Вызов правой кнопкой мыши меню для быстрого управления изображениями.
  • Новые учебники, руководства «How to» и скринкасты.
  • Тысячи новых примеров в документации.
  • Улучшен поиск по документации.
  • Интеграция со средствами рукописного ввода математических выражений в Windows 7.
  • Интеграция с следующим релизом gridMathematica Server.
  • Интеграция с Wolfram|Alpha.
  • Автоматизированное вычисление вероятности и математического ожидания.
  • Более 100 новых статистических распределений и много статистических визуализаций.
  • Формирование новых статистических распределений непосредственно из данных, формул или распределений.
  • Расширены возможности работы с графами, сетями и линейной алгеброй.
  • Добавлены возможность решать более 60 задач с экзотическими фондовыми опционами и более 100 встроенных финансовых индикаторов.
  • Встроенные средства по работе с системами управления.
  • Расширены средства анализа изображений.
  • Интегрированный вейвлет-анализ.
  • Встроенная поддержка CUDA и OpenCL.
  • Автоматическое генерирование кода Си.
  • Добавлена возможность использования SymbolicC для создания, обработки и оптимизации Си.
  • Расширенная 2-х и 3-х мерная графика, включающая отображение текстур и аппаратное ускорение 3-х мерного рендеринга.
  • Встроенный браузерный плагин.
  • Много новых автоматических упрощений для получаемых распределений, включая аффинные преобразования, суммы переменных, смеси параметров и цензурированные и усечённые распределения.
  • Улучшены результаты для функции Dot (произведение) для списков с большим количеством (> 1 000 000) целых элементов.
  • Улучшена стабильность при работе с процессорами Intel Sandy Bridge посредством включения новой версии библиотеки Intel Math Kernel Library.
  • Улучшение производительности и надёжности для многих операций с графами и сетями.
  • Уменьшено время загрузки внешнего интерфейса.
  • Улучшено создание соединений MathLink TCPIP при определённых специфических условиях.
  • Улучшен экспорт рисунков «Real» и «Real32» в TIFF для совместимости с большим количеством внешних программ для просмотра TIFF.
  • Улучшенная функциональность и стабильность Домашней редакции (Home Edition) Mathematica посредством включения 64-битных компонент.
  • Была выпущена и распространялась исключительно с gridMathematica 8.0.2, не имела отличий в функциональности от версии 8.0.1.
  • Ветвь для разработки Wolfram CDF Player 8.0.3. Версия для пользователей не выпускалась.
  • Новые опции меню и интерактивный мастер создания CDF-документов.
  • Новые функции CDFInformation и CDFDeploy для программного создания CDF-файлов.
  • Новый индикатор процента загрузки для браузерного CDF-плагина.
  • Улучшены стабильность, скорость и безопасность браузерного CDF-плагина.
  • Испытана работа под Mac OS X Lion.
  • Улучшено использование памяти функции Share при хранении больших массивов данных.
  • Обновлена библиотека MKL для увеличения производительности.
  • Новая подсветка синтаксиса, оповещающая об использовании Module-переменной в Dynamic.
  • Улучшения производительности для функций цитирования.
  • Улучшено поведение оптимизированных переменных в компилируемых условных выражениях.
  • Улучшено поведение внешнего интерфейса при сохранении не озаглавленных файлов новых версий Linux.

Расширения Mathematica

AceFEM — среда для решения физических и математических задач методом конечных элементов.

AceGen — система автоматической генерации и оптимизации кода.

Analog Insydes — пакет для моделирования, анализа и создания электрических схем.

BEST Viewpoints — программа для получения определённой информации из набора данных.

Experimental Data Analyst — обработка экспериментальных данных, определение параметров зависимостей, оценка ошибок.

Fuzzy Logic — набор инструментов для создания, модификации и визуализации нечётких множеств, а также систем основанных на нечёткой логике.

Geometrica — геометрическая энциклопедия с возможностями точного построения геометрических объектов и проверки утверждений.

Geometry Expressions — расширение для символьной геометрии.

KNITRO for Mathematica — решение задач крупномасштабной нелинейной оптимизации.

LensLab — пакет для трассировки лучей, рендеринга и анализа оптических систем.

LinkageDesigner — пакет виртуального макетирования связей.

machine learning framework — построение точных моделей по наборам данных.

MathCode C++ — генерирует оптимизированный код на C++ из программы на Mathematica.

MathCode F90 — генерирует оптимизированный код на Fortran 90 из программы на Mathematica.

Mathematica Link for Excel — взаимодействие Mathematica с Excel.

Mathematica Link for LabVIEW — в заимодействие Mathematica с LabVIEW.

MathModelica (SystemModeler) — платформа для разработки инженерных и биологических моделей.

MathOptimizer Professional — система оптимизации, использующая внешнее приложение LGO Solver Suite.

Neural Networks — моделирование и анализ искусственных нейронных сетей.

Objectica — полная поддержка возможностей объектно-ориентированного программирования в Mathematica.

Operations Research — решения задач линейной оптимизации, квадратичного программирования, поиска наименьшего пути, комбинаторной оптимизации и эвристики.

Optica — проектирование и анализ оптических систем.

PathwayLab Research Edition — анализ цепочек биохимических реакций.

SchematicSolver — аналитическое исследование аналоговых и цифровых систем.

SmartCAE Heat Transmission — моделирование теплопередачи.

Statistical Inference Package — интерфейс для статического анализа.

Structural Mechanics — моделирование систем механики сплошных сред.

Tensors in Physics — пакет тензорных вычислений.

Time Series — среда для анализа данных, зависящих от времени.

TSi ProPac — моделирование систем управления и динамики многих тел.

UnRisk PRICING ENGINE — быстрый расчёт финансовых рисков.

VisualDSolve — визуализация дифференциальных уравнений.

См. также

Примечания

  1. 12[1], Nasser M. Abbasi.
  2. Mathematica Scrapbook: June 23, 1988: Mathematica 1.0 Is Launched!
  3. http://www.mathematica-journal.com/issue/v9i1/news.html Mathematica Journal, Volume 9, Issue 1
  4. Supercomputer Pictures Solve the Once Insoluble, John Markoff, October 30, 1988.
  5. Mathematica 1.1. Biotechnology Software. Vogel, W. K. (1989)
  6. Mathematica 1.2 adds new graphics options: upgrade also promises concurrent operations by Elinor Craig, MacWeek, July 25, 1989.
  7. 12[2], Wolfram news archive, 1996.
  8. New version of Mathematica, Mechanical Engineering, June 1, 1993.
  9. Mathematica 4.0 by Charles Seiters, Macworld, October 1, 1999.
  10. Mathematica 5.0 Adds Up: Exactly 15 years after Mathematica’s initial release, Wolfram Research has released Mathematica , PC Magazine, September 3, 2003.
  11. Mathematica 5.1’s Web Services Add Up; Mathematica 5.1 delivers improvements over Version 5.0 that are vastly out of proportion for a .1 upgrade. by Peter Coffee, eWeek, December 6, 2004.
  12. Mathematica hits 64-bit, MacWorld UK, July 13, 2005.
  13. [3] Today, Mathematica is reinvented — Blog by Stephen Wolfram
  14. Mathematica 6: Felix Grant finds that version 6 of Wolfram Research’s symbolic mathematical software really does live up to its expectations. Scientific Computing, 2007.
  15. [4], Wolfram Blog, 2007.
  16. 12[5], Mathematica Quick Revision History.
  17. [6], Mathematica 7.0 Released Today! — Blog by Stephen Wolfram
  18. [7], Announcing Mathematica 7.0.1.

Ссылки

Литература

  • Дьяконов В. П. Компьютерная математика. Теория и практика. — М., СПб: «Нолидж», «Питер», 1999,2001. — С. 1296. — ISBN 5-89233-065-4
  • Дьяконов В. П. Системы символьной математики Mathematica 2 и Mathematica 3. — М .: «СК-ПРЕСС», 1998. — С. 320. — ISBN 5-89233-017-6
  • Дьяконов В. П. Mathematica 4 с пакетами расширения. — М .: «Нолидж», 2000. — С. 608. — ISBN 5-89251-086-7
  • В. Дьяконов, Ю. Новиков, В. Рычаков. Компьютер для студента. Самоучитель. — СПб. : «ПИТЕР», 2000. — С. 592. — ISBN 5-272-00082-X
  • Дьяконов В. П. Mathematica 4. Учебный курс. — СПб. : «ПИТЕР», 2001. — С. 656. — ISBN 5-572-00275-X
  • Дьяконов В. П. Mathematica 4.1/4.2/5.0 в математических и научно-технических расчетах. — М .: «СОЛОН-Пресс», 2004. — С. 696. — ISBN 5-98003-065-4
  • Морозов А. А., Таранчук В. Б. Программирование задач численного анализа в системе Mathematica: Учеб. пособие.- Мн.: БГПУ, 2005. — 145 с. http://elib.bsu.by/handle/123456789/27553
  • Дьяконов В. П. Mathematica 5/6/7. Полное руководство. — М .: «ДМК Пресс», 2009. — С. 624. — ISBN 978-5-94074-553-2
  • Дьяконов В. П. Mathematica 5.1/5.2/6 в математических и научно-технических расчетах. Изд-е второе дополненное и переработанное. — М .: «СОЛОН-Пресс», 2008. — С. 744. — ISBN 978-5-91359-045-9
  • Дьяконов В. П. Mathematica 5.1/5.2/6. Программирование и математические вычисления. — М .: «ДМК-Пресс», 2008. — С. 576. — ISBN 5-94074-405-2
  • Чарльз Генри Эдвардс , Дэвид Э. Пенни. Дифференциальные уравнения и проблема собственных значений: моделирование и вычисление с помощью Mathematica, Maple и MATLAB = Differential Equations and Boundary Value Problems: Computing and Modeling. — 3-е изд. — М .: «Вильямс», 2007. — ISBN 978-5-8459-1166-7
  • Шмидский Яков Константинович. Mathematica 5. Самоучитель. Система символьных, графических и численных вычислений. — М .: «Диалектика», 2004. — С. 592. — ISBN 5-8459-0678-4
  • Дьяконов Владимир Павлович. Вейвлеты. От теории к практике. Издание 2-е дополненное и переработанное. — М .: «СОЛОН-Пресс», 2004. — С. 400. — ISBN 5-98003-5
  • Глушко В. П., Глушко А. В. Курс уравнений математической физики с использованием пакета Mathematica. — СПб. : «Лань», 2010. — С. 320. — ISBN 978-5-8114-0983-9
    Математическое программное обеспечение
Open source Символьные вычисления: Axiom • GAP • Maxima • ; Численные вычисления: Fityk • FreeMat • GNU Octave • gretl • LabPlot • QtiPlot • R  • Sage • SciDAVis • Scilab •
Proprietary Символьные вычисления: Mathcad • Maple • Mathematica • SMath Studio ; Численные вычисления: GAUSS • LabVIEW • MagicPlot • MATLAB • Origin • SigmaPlot • Speakeasy • VisSim
    Системы компьютерной алгебры
Retail ClassPad Manager • LiveMath • Magma • Maple • Mathcad • Mathematica • MuPAD • TI InterActive!
Свободные Axiom • CoCoA • GAP • GiNaC • Macaulay2 • Mathomatic • Maxima • OpenAxiom • PARI/GP • Reduce • Sage • SINGULAR • SymPy • Xcas • Yacas
Бесплатные/shareware Fermat • KANT
Discontinued CAMAL • Derive • Macsyma • muMATH
Категория • Сравнение
  • Программное обеспечение по алфавиту
  • Wolfram Research
  • Программы математического моделирования
  • Программное обеспечение для Mac OS X
  • Программное обеспечение для Solaris
  • Программное обеспечение для Windows
  • Программное обеспечение для Linux
  • Предметно-ориентированные языки программирования
  • Редакторы формул
  • Системы компьютерной алгебры

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Mathematica" в других словарях:

Mathematica — Développeur Wolfram Research Dernière version 8 … Wikipédia en Français

Mathematica — 100px Desarrollador Wolfram Research Página de Mathematica Información general … Wikipedia Español

Mathematica — Mathematica … Deutsch Wikipedia

Mathematica — For other uses, see Mathematica (disambiguation). Mathematica Mathema … Wikipedia

Mathematica — plattformübergreifende Mathematiksoftware zur Berechnung mit bel. Genauigkeit, 2D/3D Funktionsdarstellung und Statistik (WRI) … Acronyms

Mathematica — plattformübergreifende Mathematiksoftware zur Berechnung mit bel. Genauigkeit, 2D/3D Funktionsdarstellung und Statistik (WRI) … Acronyms von A bis Z

Mathematica Policy Research, Inc. — Mathematica Policy Research, Inc. (MPR) is a policy research organization with offices in Princeton, New Jersey; Cambridge, Massachusetts; and Washington, D.C.; with a new office slated to open in Ann Arbor, Michigan in early 2008.… … Wikipedia

Mathematica (disambiguation) — Mathematica is a computer algebra system and programming language. Mathematica may also refer to: Philosophiæ Naturalis Principia Mathematica, Newton s classic book containing basic laws of physics Mathematica Policy Research, Inc., a policy… … Wikipedia

Mathematica: A World of Numbers. and Beyond — Multiplication machine in the exhibit. Large mobius strip … Wikipedia

Mathematica Policy Research — For other uses, see Mathematica (disambiguation). Mathematica Policy Research is a policy research organization with offices in Princeton, New Jersey; Cambridge, Massachusetts; Chicago, Illinois; Washington, DC; Ann Arbor, Michigan; and Oakland,… … Wikipedia

Краткая история появления Mathematica

Перевод поста Стивена Вольфрама (Stephen Wolfram) "There Was a Time before Mathematica…".
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе.
Через несколько недель [пост был написан 6 июня 2013 г. — прим. ред.] будет двадцатипятилетний юбилей: 23 июня 1988 года — день, когда была выпущена Mathematica.

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

Mathematica 1.0 на Macintosh

Да, именно таким был загрузочный экран, и да, Mathematica 1.0 работала на маках и различных рабочих станциях на Unix; PС тогда не хватало мощности.

Многие оказались под впечатлением от того, что может делать Mathematica. И были очень приятные речи о перспективах Mathematica от различных лидеров компьютерной индустрии, в числе которых был и Стив Джобс (тогда он был в NeXT’е), который был весьма любезен, чтобы прийти, хоть он и не появлялся на публике в течение некоторого времени. А кто-то на этом мероприятии был достаточно дальновиден, чтобы попросить всех выступающих расписаться на книге о Mathematica, которая только поступила в продажу в тот день в книжных магазинах по всей стране:

Столько всего произошло с Mathematica за прошедшую с тех пор четверть века. То, что началось с Mathematica 1.0, превратилось в обширную систему, в сегодняшнюю Mathematica. И вот, я смотрю на юбилейный альбом в честь 25-летия, и меня берёт гордость от осознания того, какой вклад внесла Mathematica в исследования, изобретения, образование, науку:

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

Хорошо, но откуда взялась Mathematica? Как она стала такой, какая она есть? Это очень долгая история, правда. И тесно переплетена с моей жизнью. Однако, когда я пытаюсь заглянуть в будущее, мне интересно понять, как и какими путями всё менялось в прошлом.

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

Первые электронные калькуляторы начали входить в обиход, когда мне было 12, и они меня увлекли с головой. И примерно в то же время я начал пользоваться своим первым компьютером — штуковиной размером с большой стол, в котором памяти было 8 «килослов» по 18 бит каждое, запрограммированных по большей части на ассемблере с использованием бумажной перфоленты. Я пытался приспособить его каким-нибудь образом к решению физических задач, но без особого результата. И вот, мне уже 16, я опубликовал несколько статей по физике, окончил среднюю школу и работал в британской правительственной лаборатории. «Настоящие» физики-теоретики тогда практически не использовали компьютеры. А я использовал. То настольный калькулятор HP (с плоттером!), то мэйнфрейм IBM на Фортране.

В основном я просто делал расчёты. Однако то, чем я хотел заниматься в физике, сопрягалось с самыми разнообразными разделами алгебры. И не с одной лишь алгеброй. Много с чем. Выражения из диаграмм Фейнмана с сотнями или тысячами элементов, все из которых должны быть представлены точно, если мы хотим получить правильный ответ.

И я начал размышлять, что с этим можно сделать. Мне представилось, как я всю жизнь буду гоняться за минусами и множителями в уравнениях. А потом я начал думать о том, как тут можно задействовать компьютер. И кто-то мне сказал, что есть и другие люди с подобными идеями. Были три программы, о которых я смог узнать, и как выяснилось, все они получили своё начало после одной беседы в ЦЕРНе, которая случилась в 1962 году: это Reduce (написана на LISP’е), Ashmedai (написана на фортране) и SCHOONSCHIP (написана на ассемблере 6000 CDC).

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

А затем, летом 1977 года я открыл для себя ARPANET — то, что в настоящее время переросло в Интернет. Тогда в сети было всего 256 хостов. И вот, @O 236 достался открытому компьютеру в Массачусетском технологическом институте, который работал с программой Macsyma, и в ней можно было проводить алгебраические вычисления в интерактивном режиме. Я был поражен тем, насколько мало людей пользовались этим. Но это было незадолго до тех времён, когда я стал большую часть времени тратить на это. В основном я работал с машиной методом тыка — сделав что-то, смотрел, что произойдёт, возвращался назад, опять что-то пробовал и т. д. И обычно делал такие странные вещи, как перечисление различных алгебраических форм интеграла, чисто экспериментально получая, какая продифференцирована корректно.

Мои статьи по физике начали включать в себя самые разнообразные безумные формулы. И не думая о том, что я мог бы для этого использовать компьютер, людям представлялось, что я какой-то искусный в сфере алгебры человек-калькулятор. Мои амбиции росли вместе с количеством того времени, которое я уделял Macsyma. Через некоторое время, полагаю, я стал использовать её больше всех в мире. Но где-то к 1979 году я достиг её потолка.

Затем был ноябрь 1979-го. Мне было 20, и я только что получил PhD в области физики. Я проводил несколько недель в ЦЕРНе, планируя своё будущее в физике (так мне тогда представлялось). И я тогда кое-что понял: чтобы продуктивно заниматься физикой, мне нужно нечто большее, чем Macsyma. И через некоторое время я решил, что единственный способ получить то, я хочу — сделать это самому.

И я начал реализовывать то, что потом стало называться SMP (Symbolic Manipulation Program, программа для символьных операций). Я обладал обширными познаниями в языках программирования того времени, как в сфере процедурных ALGOL’оподобных, так и в LISP и APL. И когда я набросал примерный вид SMP, то получилось нечто очень похожее на то, что я видел в этих языках. Однако по мере того, как я понимал, какой должна быть SMP, я начал пытаться придумывать всё сам.

Полагаю, у меня были некоторые весьма интересные идеи. И, по сути, в некоторых идеях из проектной документации ещё весьма сырой SMP прослеживаются мотивы грядущей Mathematica:

Просматривая сейчас документацию SMP, я понимаю, что это было весьма впечатляющая система, особенно учитывая, что мне было всего лишь 20 лет, когда я начал её проектировать. Разумеется, далеко не все идеи в SMP оказались хороши. И, как специалист в области дизайна языков с большим стажем, я не могу не упомянуть некоторые из моих «любимых» ошибок, которые представлены в конце этого поста.

Даже в ранних своих версиях SMP была большой системой. Но по каким-то причинам я не находил в ней ничего сложного. Я просто хотел двигаться дальше и реализовать её. Я хотел быть уверенным в том, что сделал всё настолько хорошо, насколько это возможно. Помню, мне пришла в голову мысль: «по-сути, я не знаком с информатикой; лучше бы мне её изучить». После чего пошёл в магазин и скупил у них все книги, которые имели отношение к ней — примерно половина шкафа. И начал их читать одну за одной.

Тогда я работал в Калифорнийском технологическом институте. И я пригласил выступить с речью всех, кого только мог найти в мире, кто бы работал над схожими системами. Я собрал небольшую рабочую группу в Калифорнийском технологическом институте, в которую некоторое время входил и Ричард Фейнман. И я начал вербовать людей со всего кампуса на работу над “SMP Project”.

Вначале предстояло принять важное решение о том, на чём писать SMP. Macsyma была написана на LISP’е, и многие говорили, что только на нём и можно написать. Но молодой аспирант-физик по имени Роб Пайк убедил меня, что C — язык будущего, что это правильный выбор (Роб много чем занимался впоследствии, включая создание языка Go). И вот, в начале 1980 года были написаны первые строки кода C для SMP.

Группа, работающая над SMP, имела весьма интересный состав. Первый из тех, кого я пригласил в группу — Крис Коул — после этого работал IBM и стал ярым последователем APL, после чего основал довольно-таки успешную компанию под названием Peregrine Systems. Были студенты, каждый из которых имел какие-то свои навыки, профессор, весьма увлечённый программированием, в соавторстве с которым я написал несколько статей по физике. Конечно, случались и оказии. Был один парень, который писал очень эффективный код, притом в одну строчку; он использовал красочные имена для функций, притом так, чтобы чтобы их комбинация читалась бы как какая-нибудь шутка. Или, скажем, был блестящий студент-бакалавр, который так усердно работал над проектом, что сильно отстал по учёбе; он пообещал не прикасаться к компьютеру, но вскоре был обнаружен за тем, что надиктовывал своему товарищу код.

Я и сам написал много кода для SMP (около 1000 строк каждый день). Я придумал её дизайн. И я написал большую часть документации. Я никогда до этого не управлял большим проектом. Однако, по какой-то причине, это никогда не было для меня чем-то очень сложным. И вот, в июне 1981 года, появилась первая версия SMP, и была она весьма похожей на Mathematica:

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

Я понял, что всё может иметь символьное представление. Хоть и символьно индексированные списки в SMP не позолили ввести «заголовки выражений», которые весьма ясно реализованы в Mathematica. И, несомненно, были некоторые странности во внутренней реализации символьных выражений, одна из которых — хранение всех чисел в формате с плавающей запятой (Тини Вельтман, автор SCHOONSCHIP, а после и лауреат Нобелевской премии по физике, сказал мне, что хранение числа в формате с плавающей запятой было одним из лучших когда-либо сделанных им решений, потому что FPU намного быстрее в арифметических вычислениях, нежели ALU).

До SMP я написал много кода для таких систем, как Macsyma, и я понял, что всё, что я пытался сделать, заключалось в том, чтобы сказать системе: «у меня есть выражение, которое выглядит вот так, и я хочу его привести его вот к этой форме». Таким образом, в разработке SMP использование правил преобразования для семейств символьных выражений, представленных шаблонами, стало одной из центральных идей. Реализация, конечно, не была столь же чистой, как в Mathematica, и в ней имелись не самые удачные идеи. Однако там были уже многие ключевые элементы.

В конце концов, содержание документации у SMP первой версии 1981 года было в достаточной степени современным:

Да, графическому выводу отводится небольшой раздел — так же, как и управлению памятью. И есть такие очаровательные разделы, как “тупиковые ситуации в программе” (т. е. зависание системы), а так же “создание статистических выражений” (т. е. создание случайных выражений). Однако уже имеется «параллельная обработка», наряду с «построением программ» (т. е. генерация кода). SMP мог даже генерировать C код, компилировать его, и, что весьма пугающе, динамично связывать его с запущенным исполняемым файлом SMP. И было много математических функций и математических операций, хотя и значительно меньше, чем в Mathematica.

Ну, хорошо. Заработал SMP 1.0. И что с ним делать? Было очевидно, что для многих людей система оказалась бы полезной. Она запускалась на довольно больших компьютерах — на так называемых «мини-ЭВМ», наподобие VAX, который был по размерам в несколько больших холодильников, и стоили такие по несколько сотен тысяч долларов. Однако я знал, что было много научно-исследовательских и проектных организаций, которые имели подобные машины.

Тогда я ничего не знал о компаниях и бизнесе. Но я понимал, что работа людей над SMP должна быть оплачиваемой, и весьма очевидный вариант по получению денег заключался в продаже копий SMP. Моя первая мысль была пойти в организацию, которую сейчас назвали бы «центром обмена технологиями» в Калифорнийском технологическом институте и узнать, смогут ли они нам чем-то помочь. В то время офис по существу состоял из одного приятного пожилого джентльмена. Но после нескольких попыток стало ясно, что он на самом деле не знал, что нужно делать. Я спросил его о том, как такое может быть; я полагал, что подобные вещи должны в Калтехе происходить постоянно. «Ну, — сказал он, — в основном люди с факультета просто уходят и сами основывают свои компании, так что мы оказываемся никак не вовлечены в процесс». «О, — сказал я, — так я тоже могу так?». И, пролистав устав университета, он сказал: «программное обеспечение можно запатентовать, университет не претендует на авторские права, так что да, Вы можете».

И я так и сделал, решив основать свою компанию. Но всё оказалось не так просто. Потому что некоторое время спустя администрация университета вдруг решила, что всё было не OK. Были весьма странные и недостойные моменты («возьмите меня в долю, и я отпишусь от этого», и т. д.). Ричард Фейнман и Мюррей Гелл-Манн заступились от моего имени. Президент университета, похоже, не знал, что делать. И на какое-то время всё застопорилось. Но в итоге мы договорились, что университет будет предоставлять лицензии независимо от имеющихся у них прав, даже если им придётся поменять что-то в своих документах касательно программного обеспечения.

REDMOND

В итоге осталась одна загвоздка в виде тогдашнего ректора университета. Он заявил, что подобная лицензия создаёт конфликт интересов между университетом и компанией, если я работаю в университете и владею частью компании. «Хорошо, — сказал я, — это не проблема, я покидаю университет». Казалось, это стало большим сюрпризом. Но я ушёл из университета и перешел в Институт перспективных исследований в Принстоне, куда, как отмечал тогдашний директор, они отдали компьютер, когда умер Джон фон Нейман, так что они могли особо не волноваться касательно интеллектуальной собственности.

В течение многих лет я размышлял о том, что же тогда на самом деле происходило в Калтехе. И, так получилось, что буквально пару недель назад я решил снова посетить Калтех (получить награду “выдающегося выпускника”). Обедая в факультетской столовой, я обнаружил, что за соседним столиком сидел никто иной, как бывший ректор Калтеха, которому уже почти 95. Я был впечатлён его глубоким отзывом на то, что он назвал “the Wolfram Affair” (был ли он предупреждён?). В итоге наш разговор многое прояснил.

Честно говоря, всё оказалось ещё более странным, чем я мог себе вообразить. История в некотором смысле началась в 1930-е годы, когда Арнольд Бекман был в Калтехе, изобрёл измеритель рН, а затем покинул университет, основав Beckman Instruments. К 1981 году Бекман был основным спонсором Калтеха и председателем его попечительского совета. Между тем, председатель его биологического факультета (Ли Гуд) изобрёл геномный секвенсор. Он сказал, что много раз пытался им заинтересовать Beckman Instruments, но безрезультатно, и потому основал свою собственную компанию (Applied Biosystems), которая стала весьма успешной. В какой-то момент, как мне сказали, Арнольд Бекман расстроился и сказал администрации, что они должны “прекратить уходы IP с кампуса” [IP (intellectual property) — интеллектуальная собственность — прим. ред.]. И так получилось, что это совпало со временем появления моего проекта по SMP. И тогдашний ректор сказал, что он обязан этим заняться (он так же был и химиком, которого Фейнман и Гелл-Манн, как физики, называли «околофизиком»).

Но, несмотря на весь этот кавардак, всё таки появилась компания, которую я назвал Computer Mathematics Corporation. В то время я всё ещё представлял себя молодым учёным и не думал, что буду управлять компанией. Так что я привёл CEO, который был старше меня где-то в два раза. И по велению директора и некоторых венчурных капиталистов компанию решили объединить со старпапом, который, как они думали, должен был преуспеть в НИОКР в сфере искусственного интеллекта.

Между тем, SMP продвигался под слоганом «математика на компьютере»:

Были ужасные промахи. Генеральный директор: «Давайте построим рабочую станцию для запуска SMP»; я: «Нет, мы софтверная компания, и я видел систему Stanford University Network (SUN), которая заведомо лучше всего того, что мы смогли бы сделать». А потом были подобные необоснованные заявления от рекламщиков:

И скоро я понял, что всё это неправильно. SMP получается какой-то дойной коровой, и хотя CEO не был особо хорош в зарабатывании денег, он был весьма хорош в их привлечении — пройдя через целый ряд успешных инвестиционных витков, пока в конце концов не пришёл к посредственным IPO много лет спустя.

Тогда лично для меня были потрясающие времена — я непосредственно занимался наукой, открывал вещи, которые впоследствии заложили основы для нового вида науки (A New Kind of Science). И по сути SMP оказался базой для того, что я в итоге сделал. Потому что мой принцип поиска вычислительных примитивов для SMP навёл меня на мысль о поиске вычислительных примитивов в природе и созданию новой науки из изучения результатов действий этих примитивов.

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

Что ж, подумал я, у меня всегда имелась собственная копия исходников SMP, в которые я не заглядывал уже много лет. Так почему бы не перекомпилировать их на какую-нибудь современную систему? Но потом я вспомнил о своей «гениальной» идее о том, что мы должны хранить исходники в зашифрованном виде. Но какой ключ мы использовали? Я спрашивал у всех, кто мог знать его. Но никто его не помнил.

Прошло много лет, и мне очень хотелось снова увидеть SMP в действии. Так что вот такая задача. Вот исходник программы на C, зашифрованный так же, как и исходники SMP. На самом деле, это исходники программы, которая и произвела шифрование — версия circa-1981 Unix crypt utility, по-хитрому модифицированная путём изменения ряда параметров и тому подобного. Сможет ли кто-нибудь взломать шифр, освободив, наконец, SMP из столь долгого заточения? Вот что говорит Wolfram | Alpha Pro, если мы просто загрузим этот файл в неизменном виде:

Но вернемся к основной истории. Я перестал работать над SMP в 1983 году, занимаясь параллельно фундаментальной наукой, программными проектами, и своим (весьма поучающим) «хобби» в разработке технологий и стратегическом консалтинге. Понемногу я использовал SMP, но затем я, в конечном итоге, стал писать на C, как правило, склеивая алгоритмы, графики и интерфейсы.

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

Однако к этому моменту я уже начал беспокоиться о том, что моя схема вовлечения других людей не так уж и хороша. И за несколько первых недель в Иллинойсе у меня в голове созрел план Б: создать лучший инструментарий, какой я только могу, лучшую среду для своей работы, на какую я только способен, и добиться максимальной результативности в науке своими силами. А так как я был тесно связан с компьютерной индустрией, я знал, что разнообразные мощные программные системы будут работать на огромном количестве персональных компьютеров, которые скоро должны появиться. И я понимал, что если у меня получится что-то хорошее, то это можно будет успешно реализовывать на появляющемся рынке, который поддержит интересную компанию и инфраструктуру.

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

И, конечно, результатом стала Mathematica.

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

Если это не было бы реализовано в SMP, я допустил бы множество ошибок. Однако SMP многому научил меня, показав, что важно, а что нет, в чём заключаются основные проблемы. Просматривая сейчас свои архивы, я вижу кропотливый процесс решения головоломок из проблем, с которыми я сталкивался при разработке SMP. И шаг за шагом приходило решение.

Тем временем, как и в случае с SMP, я собрал команду и начал непосредственную реализацию Mathematica. Я снова создал компанию, и на этот раз в качестве генерального директора выступал я сам. Каждый день я писал очень много кода (и, что несколько огорчает, лишь небольшая часть этого кода работает сейчас в Mathematica, особенно в системе сопоставления с шаблоном и вычислителе). Однако основной фокус был направлен на дизайн. И, так же, как и с SMP, я написал документацию и разработал дизайн. Я подумал, что если я что-то не могу достаточно понятно объяснить в документации, то это никто и не поймёт, и, вероятно, это что-то было создано неправильно. И как только что-то оказывалось в документации, мы знали как то, что нужно реализовать, так и то, почему мы это делаем.

Первые фрагменты кода Mathematica были написаны в октябре 1986 года. И к середине 1987 года Mathematica начинает претворяться в жизнь. Я решил, что документация должна быть опубликована в виде книги, и сотни страниц были уже написаны. И я прикинул, что Mathematica 1.0 будет готова к апрелю 1988 года.

Первоначальный мой план для нашей компании заключался в сосредоточении на исследованиях и разработке, а распространять Mathematica предполагалось прежде всего через производителей компьютеров. Стив Джобс первым принял Mathematica «на борт», которая должна была поставляться на всех, пока ещё не выпущенных компьютерах NeXT. Затем последовали сделки с Sun, Silicon Graphics, IBM и рядом других компаний. Мы начали отправлять бета-версии Mathematica.. И пусть это было задолго до появления всемирной паутины, знание о существовании нашей системы начало распространяться. Также подключились некоторые СМИ (я до сих пор люблю это мороженое):

Где-то весной 1988 года мы официально установили 23 июня датой выхода Mathematica (не имея Wolfram|Alpha, я тогда и не знал, что это был день рождения Алана Тьюринга). Нужно было много чего ещё сделать. В те дни выпуск программного обеспечения представлял собой не просто щелчок переключателя. Вспоминается, как мы запускали The Mathematica Book в печать. Как я прилетел в Канаду с жестким диском, лично нянчившись с фотонаборной машиной все выходные, передав затем произведённую ею коробку плёнок человеку, встречавшему меня в Бостонском аэропорту. Но, несмотря на всё это, незадолго до 23 июня были разосланы эти вот загадочные приглашения:

И вот, полдень 23 июня, в помещении полно народу, и мы выпускаем Mathematica в свет.

Славные 25 лет были после этого. Основа, которую мы заложили в Mathematica 1.0, была хорошо подкреплена моим предыдущим опытом, и оказалась невероятно прочной, и мы на этой основе непрестанно продолжали её строить. Мой «план Б» по использованию Mathematica для своих научных исследований работал просто великолепно, и привёл меня в итоге к новому виду науки. И вместе с Mathematica мы смогли построить прекрасную компанию, а так же создать такие вещи, как Wolfram|Alpha. И в течение последующих 25 лет мы с большим удовольствием и гордостью наблюдали вклад Mathematica в самых различных направлениях.

Дополнительный материал: Уроки SMP

Какой была SMP? Вот несколько примеров программ в SMP, которые я написал для документации SMP:

В некоторых моментах они очень похожи на программы в Mathematica, вместе с обозначениями [. ] для функций, для списков и -> для правил замены. Но в них нет той читаемости, которая есть в Mathematica, и программы на SMP выглядят значительно менее понятными.

Одна из наиболее очевидных проблем заключается в том, что код в SMP забит символами $ и % , являющимися соответственно префиксами шаблонов и переменных. В SMP я ещё не реализовал идею, которая появилась в Mathematica, о отделении шаблонов (например, _ ) от их имён (например, x ). И я считал, что важно подчеркнуть, какие из переменных являются локальными, однако мне не приходила в голову идея о выделении их цветом.

В SMP я уже реализовал (весьма полезную) идею разграничения непосредственного (=) и отложенного (:=) присваивания. Однако, уподобляясь алголоподобным языкам, я реализовал их тогда не особо ясно — : и :: . (Для правил замены форма -> была именно той формой, которая затем была реализована в Mathematica, а форма —> была аналогична современной :> . Конструкция S[. ] была аналогична современной /. )

В SMP, так же, как и в Mathematica, встроенные функции писались с заглавной буквы (в то время это было чем-то новым — разделение на верхний и нижний регистры на компьютере). Но в то время как в Mathematica, как правило, используются обычные английские слова для обозначения функций, в SMP используются короткие и зачастую малопонятные аббревиатуры. Когда я работал над SMP, я находился под влиянием дизайна Unix и использовал принятые в нём короткие имена. И всё было бы в порядке, если в SMP было бы всего несколько функций. Но с сотнями функций, имена которых подобны чему-то вроде Ps , Mei и Uspb , в итоге сильно затрудняется читабельность кода. Конечно, тут играет роль ещё тот факт, что многие пользователи не умеют быстро печатать, так что это был ещё один голос в пользу коротких имён функций.

Весьма интересно почитать документацию SMP в наши дни, В SMP было много хороших идей, которые впоследствии были перенесены в Mathematica. Но были и плохие идеи, которые, к счастью, остались в истории. Одна из подобных идей, которая имеет столь же плохое название, сколь и её суть — «символы-хамелеоны», которые изменяют свое имя при их использовании (это была попытка перенести такую вещь, как фиктивные переменные, нечто вроде более автоматизированной версии Module в Mathematica).

Были и значительно более тонкие ошибки. Как, к примеру, чрезмерное усердствование в обобщении систем. Как и в Mathematica, в SMP списки обозначились так: . Функции имели такое обозначение: f[x] . И в своём стремлении достичь максимально возможной унификации я решил попробовать объединить понятия списков и функций.

Скажем, есть у нас список v= (в SMP присвоение обозначалось как : , так что записывалось бы вот так v: ). Затем, например, v[2] в SMP извлекало бы второй элемент списка. Но это обозначение выглядит так же, как если бы мы запросили значение функции v с аргументом 2. И это навело меня на мысль о том, что можно обобщить списки таким образом, чтобы у них было не только целочисленное количество элементов, а любое, которое можно выразить в символьной форме.

В SMP шаблонные выражения ( x_ в Mathematica) писались так: $x . То есть при определении функции f[$x]:$x^2 можно представить, что это просто определение f как списка с символьной индексацией: . Если нужно узнать то, как была определена функция, то достаточно просто ввести её имя — f , к примеру. И получаемое значение было бы символьно индексированным списком, которое бы и представляло собой определение.

Обычный список векторного типа может рассматриваться как нечто-то вроде . И можно было перемешивать символьные индексы: . Была также определенная унификация по части нумерации для обобщённых символьных выражений. И всё, казалось бы, хорошо. И чтобы описать свою единую концепцию функций и списков, я назвал f в f[x] проекцией, а x — фильтром.

Но постепенно эта концепция начала расходиться по швам. Получались разного рода странности при введении определений наподобие v[2]:b, v[3]:c . Тогда для v , согласно принципам SMP, будут значения . Но что, если сделать определение v[1]:a ? В этом случае v вдруг изменяет свой порядок на .

И всё становилось ещё более странным при использовании функций от нескольких аргументов. Было бы здорово, если бы можно было определить матрицу с m:<,> , тогда m[1] будет , а m[1,1] или m[1][1] будет a . Но что делать, если нужна функция с несколькими аргументами? Будет f[x, y] тем же самым, что и f[x][y] ? Ну, иногда требовалось нечто подобное, а иногда нет. Так что мне пришлось придумать свойство («атрибуты» в Mathematica), которое я назвал Tier , в котором для каждой функции указывалось, как она должна работать (сегодня многие, наверное, слышали о каррировании, но тогда подобные различия совсем не казались очевидными.)

Символьно индексированные списки в SMP обладали некоторыми изящными и мощными свойствами. Но в результате, когда вся система была построена, обнаружилось множество странностей. И потому, когда я разрабатывал Mathematica, я решил их не использовать. На протяжении многих лет я продолжал о них размышлять. И так получилось, что сейчас, более чем через 30 лет после SMP, я работаю над некоторым весьма интересным новым функционалом в Mathematica, который тесно связан с символьно индексированными списками [в 10-й версии системы появились ассоциации — Association — прим. ред.].

Работа над SMP дала мне бесценный опыт: я увидел, что действительно работает, а что нет. И одним из наиболее запоминающихся моментов для меня был этот. Как и в Mathematica, в SMP были чистые функции. Но, в отличие от Mathematica, они не указывались с помощью символа & . И это означало, что требовался специальный объект, называемый «mark» (пишется как ` , машинописный обратный апостроф), для обозначения того, когда чистая функция должна выдавать некоторое символьное, константное значение. Ну, спустя лет пять после выхода SMP, я просматривал одно из обучающих пособий. И мне в глаза бросилась фраза: «обратные апострофы — загадка SMP». И тогда я понял: вот как выглядят ошибки в дизайне языка.

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

Один из важных моментов в проектировании системы — знать, что в ней будет важно. В SMP мы потратили много усилий на так называемые «семантические шаблоны». Скажем, есть у нас такое определение: f[$x+$y, $x, $y] := . Вполне понятно, что ему будет соответствовать f[a+b, a, b] . Но что насчёт f[7, 3, 4] ? В SMP шаблон будет удовлетворен, хотя 7 не есть форма конструкции $x+$y . Потребовалось большое количество усилий для реализации этого. И в простых примерах всё выглядело здорово. Но, в конце концов, подобное не требуется уж очень часто, а если и требуется, подобное стараются избегать, потому что такие конструкции сильно ухудшают читабельность программы, становится трудно понимать, что она делает.

Было нечто подобное с контролем рекурсии. Я думал, что данные конструкции стоит избегать f[$x] : $xf[$x-1] (без задания f[1] ), ведь они имеют бесконечный цикл, пытаясь вычислить f[-1] , f[-2] и т. д., пока, в конце концов, в какой-то момент не произойдёт умножение на 0. Так почему бы просто не выдать нуль? Ну, в SMP по умолчанию выводился нуль. Потому что вместо того, чтобы проходить весь путь по вычислению каждой ветви дерева рекурсии, SMP периодически останавливался и пытался упростить все невычесленные ветви. Это было умно и изящно. Однако когда кто-то пытался задать подобное поведение, всё становилось слишком сложным для понимания, и в итоге никто это не использовал.

А потом был определяемый пользователем синтаксис. Он позволял, к примеру, установить " U " (скажем, для " union "), как инфиксный оператор. И всё работало замечательно, пока кто-нибудь не вводил функцию с именем «u». Или пока кто-нибудь не становился пленником своего собственного синтаксиса.

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

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

Wolfram Mathematica

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

Mathematica 12.3 уже доступна!
Новшества системы »

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

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

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

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

Огромная система, тесная интеграция

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

Не только числа и математика, но всё

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

Удивительная алгоритмическая производительность

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

Более высокий уровень, чем когда-либо прежде

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

Вся функциональность промышленного класса

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

Убедительная простота в использовании

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

Не только пишите код, но и документируйте

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

Понятный код

Благодаря когерентному дизайну и использованию интуитивных названий функций, состоящих из полных английских слов, язык Wolfram Language исключительно просто читать, использовать и изучать.

Представляйте свои результаты наилучшим способом

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

Более 150 000 примеров

Начните с практически любого проекта с помощью более 150000 примеров из Documentation Center и более 10000 демонстраций с открытым кодом в Wolfram Demonstrations Project и большого количества других ресурсов.

Реальные данные напрямую

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

Эффективная облачная интеграция

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

Работа с чем угодно

Система Mathematica построена так, чтобы быть подключенной ко всему: файловым форматам (более 180), другим языкам, Wolfram Data Drop, API, базам данных, программам, интернету вещей, устройствам и даже распределённым копиям самой себя.

Функциональное покрытие

Система Mathematica основывается на инновационном языке Wolfram Language.

REDMOND

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

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