]]> ]]>
Править | Обсудить | История

Wolfram Mathematica

Русское название:
Математика
Дата создания:
1988
Создан под влиянием:
Повлиял на:
Парадигма:
Типизация:
Принятые расширения файлов:
.nb, .m
Реализации и версии (свернуть все | развернуть все):
Язык программирования

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

Mathematica была создана Стефаном Вольфрамом (Stephen Wolfram) и разрабатывается Wolfram Research. Первая версия была выпущена 23 июня 1988 года.

Mathematica предоставляет пользователю огромный инструментарий:

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

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

Элементы синтаксиса:

Комментарии, которые не могут быть вложенными (* ... *)
Регистрозависимость да
Регулярное выражение идентификатора переменной [_a-zA-Z][_a-zA-Z0-9]*
Регулярное выражение идентификатора функции [_a-zA-Z][_a-zA-Z0-9]*
Присваивание значения переменной a=b, a:=b(отложенное или ленивое присвоение)
Объявление переменной (происходит в месте ее первого использования)
Объявление переменной с присваиванием значения <varname> = <value>;
Группировка выражений ( ... )
Блок [ ... ]
Равенство ==
Неравенство !=
Сравнение < > >= <=
Определение функции f[x_, y_, z_] := (x + y + z)
Вызов функции f[x, y, z]
Вызов функции без параметров f[]
Последовательность ;
Если - то If[condition, trueBlock]
Если - то - иначе If[condition, trueBlock, falseBlock]
Бесконечный цикл While[1<2, loopBody]
Цикл с предусловием While[condition, loopBody]
Цикл for - next для диапазона целых чисел с инкрементом на 1 For[i = 0, i < 10, i++, loopBody]
Цикл for - next для диапазона целых чисел с декрементом на 1 For[i = 10, i > 0, i--, loopBody]

Логотип Wolfram Mathematica
Логотип Wolfram Mathematica

Примеры:

Квадратное уравнение:

Пример для версий Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

После ввода коэффициентов определяем переменную y — квадратное уравнение с заданными коэффициентами. Так как x не определено, в уравнении оно останется обычной переменной (например, Print[y] выведет запись полученного уравнений c + b x + a x^2 с подставленными коэффициентами a, b и c). Функция Reduce вычисляет значения переменных, при котором указанное условие будет истинным. Условие в данном случае — квадратное уравнение, а переменная — x.

a = Input["Input a", 0];
b = Input["Input b", 0];
c = Input["Input c", 0];
y = a*x^2 + b*x + c;
Print[Reduce[y == 0]];

Факториал:

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

Используется встроенная функция вычисления факториала !. Do — один из способов реализации циклов; выполняет первый аргумент для всех значений, заданных вторым аргументом, а именно: для всех i от 0 до 16 с шагом 1.

Do[Print[i, "! = ", i!] , {i, 0, 16, 1}]

Числа Фибоначчи:

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

Print обязательно завершает вывод переносом строки, поэтому для того, чтобы вывести все числа Фибоначчи в одной строке, их нужно накопить в переменной msg и вывести ее. <> — оператор конкатенации; он работает только с явными строками, поэтому результат вызова Fibonacci нужно явно перевести в строку функцией ToString.

msg = "";
Do[msg = msg <> ToString[Fibonacci[i]] <> ", " , {i, 16} ];
Print[msg, "..."];

Hello, World!:

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

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

Print["Hello, World!"];

Hello, World!:

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

В этом случае создается временная строковая переменная. В конце строки нет символа “;”, и значение этой переменной выводится отдельным Out, что не всегда удобно.

"Hello, World!"

Факториал:

Пример для версий Wolfram Mathematica 8.0.4

Используется рекурсивное определение факториала. Обратите внимание на то, что при определении функции ее аргумент дополняется символом _.

Fact[n_] := If[n == 0, 1, Fact[n - 1]*n];
For[i = 0, i <= 16, i++, Print[i, "! = ", Fact[i]]];

Числа Фибоначчи:

Пример для версий Mathics 0.4

Этот пример использует функцию Riffle, которая в данном случае перемежает элементы массива чисел Фибоначчи копиями строки “,”.

StringJoin[Riffle[Map[ToString, Table[Fibonacci[i], {i,16}]], ", "]] <> "..."

Факториал:

Пример для версий Wolfram Mathematica 8.0.4

Символу f[x] ставится в соответствие список (List[…]) первых x натуральных чисел, генерируемый функцией Range[x], в которой головная часть List заменяется на Times при помощи функции Apply[head, expr], записанной здесь как head@@expr.

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

fact[x_]:=Times@@Range[x];

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам