Skip to content

Wolfram programming course. Syntax and features of the language. Basic algorithms and structures in this language. And also a lot of other interesting things. 📏

Notifications You must be signed in to change notification settings

BogdanKlimov11/Wolfram_course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 

Repository files navigation

Справочник языку программирования Wolfram

Wolfram logo

Оглавление

  1. Введение
  2. Комментарии
  3. Ввод выражений
  4. Обыкновенные и десятичные дроби
  5. Переменные и функции
  6. Алгебра
  7. Двумерные графики
  8. Геометрия
  9. Тригонометрия
  10. Полярные координаты
  11. Степени и логарифмы
  12. Пределы
  13. Производные
  14. Интегралы
  15. Последовательности, суммы и ряды
  16. Специализированные двумерные графики
  17. Трехмерные графики
  18. Функции нескольких переменных
  19. Векторный анализ и визуализация
  20. Дифференциальные уравнения
  21. Комплексные числа
  22. Матрицы и линейная алгебра
  23. Дискретная математика
  24. Вероятности
  25. Статистика
  26. Функции для визуализации данных и аппроксимации кривых
  27. Теория групп
  28. Математические головоломки
  29. Интерактивные модели
  30. Математическая нотация

Введение ↑top↑

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

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


Комментарии ↑top↑

В Языке Wolfram, как и во многих других языках программирования, комментарии используются для добавления пояснений к коду, которые не исполняются интерпретатором или компилятором. Вот как можно добавлять комментарии в код на Языке Wolfram:

Однострочные комментарии: Однострочные комментарии начинаются с символа (* и заканчиваются символом *). Любой текст между этими символами будет считаться комментарием.

(* Это однострочный комментарий *)

Многострочные комментарии: Вы можете также создавать многострочные комментарии, заключая текст между (* и *). Это удобно для описания блоков кода или для временного исключения фрагментов кода из выполнения.

(* Это
   многострочный
   комментарий *)

Комментарии внутри строк кода: Иногда бывает удобно добавить комментарии прямо внутри строк кода. Для этого используется символ % после которого идет комментарий до конца строки.

Print["Это строка кода"]; (* Это комментарий *)

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


Ввод выражений ↑top↑

В документах Wolfram на локальном компьютере или в облаке, для начала работы нужно просто набрать нужное выражение и, затем, нажать SHIFT + ENTER для расчета:

Метки In[n] и Out[n] обозначают соответствующие входные и выходные данные. Символ % обозначает результат последних вычислений:

После выполнения расчетов появляется Suggestions Bar, которая предлагает несколько вариантов последующих действий:

Для обозначения математических операций используются традиционные символы (для умножения используйте пробел или *, а не символ x.):

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

Язык Wolfram содержит более 5 000 встроенных функций, покрывающих множество различных областей математики.

Аргументы встроенных функций разделяются между собой запятыми и заключены в квадратные скобки:

Если Вы не знаете, какую функцию использовать, просто наберите = в начале строки для активации естественной формы ввода:

Списки представляют собой коллекцию элементов и задаются с помощью фигурных скобок { ... }:

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

Многие встроенные операторы к спискам применяются поэлементно:

Нумерация элементов списка начинается с 1. Части списка могут быть получены с помощью двойных квадратных скобок [[ ... ]]:

Создавать списки можно легко, благодаря таким функциям как Range:


Обыкновенные и десятичные дроби ↑top↑

В Языке Wolfram, точные входные данные (например, обыкновенные дроби) приведут к точному результату (Используйте CTRL + / для ввода обыкновенных дробей):

Сложим дроби, используя функцию Together, которая обеспечивает наименьший общий делитель в ответе:

Если в выражении представлена хотя бы одна десятичная дробь, то результат будет представлен в приближенной форме:

Функция N позволяет получить численное приближение результата:

Также можно указать необходимую точность результата:

Некоторые цифры лучше отображать, используя ScientificForm:

ScientificForm используется автоматически, когда это необходимо:


Переменные и функции ↑top↑

Имена переменных должны начинаться с букв и могут также содержать цифры (имена переменных лучше начинать с маленьких букв, так как встроенные объекты начинаются с прописных букв):

Пробел между двумя переменными или цифрами обозначает умножение (другими словами, “a b” - это a умножить на b, а “ab” - это переменная ab):

Используем символы /. и для замены частей выражения (символ “правило” может быть набран как ->):

Присвоение значения переменной осуществляется с использованием символа = (равенство):

Собственные переменные можно использовать в любых выражениях и функциях:

Значение переменной можно стереть и тогда x останется не вычисленным:

Собственные функции можно задавать с помощью конструкции f[x_]:=

x_ означает, что x - это шаблон, который может быть заменен любым значением.

:= означает, что функция f с любым переданным аргументом будет заменена на правую часть функцию после ее вычисления:


Алгебра ↑top↑

Можно проводить факторизацию или раскрывать алгебраические выражения (используйте CTRL

  • 6 для ввода степени):

В Языке Wolfram символ == (два знака равенства) используется для проверки равенства:

Объединим алгебраические выражения с помощью == для формирования уравнения:

Функции, такие как Solve позволяют найти точные решения уравнений:

Для приближенных результатов используйте NSolve:

Систему уравнений можно передать функции в виде списка:

Найдем корни уравнения (символ || обозначает Или):

В случае если полином не так просто разложить на множители, то лучше использовать приближенные решения:

Функция Reduce сводит системы неравенств к простой форме (наберите <= для ввода символа ):

Упрощенная форма может состоять из нескольких интервалов:

Функция NumberLinePlot - это удобный способ визуализации этих результатов:

Большое число уравнений и формул доступно через естественную форму ввода:


Двумерные графики ↑top↑

Создадим двумерный график полиномиальной функции (интервал {x,min,max} используется для задания области определения аргумента):

Или построим двумерную область, заданную системой неравенств (&& - это символ для И):

Существует большое число опций для настройки визуализации, например, добавление легенд:

Или закрашивание области под графиком:

Соединим несколько типов графиков с помощью функции Show:


Геометрия ↑top↑

Функция Graphics позволяет создавать все виды двумерных графиков:

Многие геометрические объекты в качестве входных аргументов принимают координаты вершин в виде списка:

Для контроля над стилями графических объектов используются списки директив:

Генерация треугольников осуществляется за счет таких функций, как SASTriangle (наберите ESC deg ESC для ввода символа °):

Такие свойства, как площадь, вычисляются с использованием прямых команд:

В качестве аргументов функции Graphics также можно передавать инициализированные переменные:

Аналогично, функция Graphics3D используется для отображения трехмерных графических объектов:

С помощью встроенных функций можно рассчитать объем фигуры и другие свойства (если функция Cylinder вызвана без аргументов, то полученный цилиндр будет иметь радиус 1 и высоту 2):

Информация о геометрических фигурах и их формулах доступна через естественную форму ввода:

Геометрические преобразования осуществляются с помощью встроенных функций, таких как Rotate, Translate и Scale:


Тригонометрия ↑top↑

Для базовых тригонометрических функций используются стандартные обозначения (первые буквы в именах функций - заглавные):

Добавим ключевое слово “Arc” для получения обратных функций:

Для работы с радианами зачастую необходимо использовать константу Pi (наберите ESC pi ESC для ввода символа π):

Или наберите ESC deg ESC для использования встроенного символа Degree:

Разложим (или упростим) тригонометрические выражения, используя известные тождества:

Выполним факторизацию тригонометрического полинома:

Такие функции, как Solve, также позволяют решать подобные уравнения:

Уточним интересующую область решений:


Полярные координаты ↑top↑

Построим двумерный график в полярных координатах (наберите ESC th ESC для ввода символа θ):

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

Переведем декартовы координаты в полярные:


Степени и логарифмы ↑top↑

В Языке Wolfram для отображения экспоненты используется символ E.

Функция Log возвращает натуральный алгоритм выражения:

Вычислим логарифм по основанию 2:

Построим график, используя логарифмический масштаб по оси ординат:

Построим обе оси в логарифмическом масштабе:


Введение ↑top↑

Рассчитаем предельное значение выражения (наберите -> для ввода символа ):

Найдем предел на бесконечности (наберите ESC inf ESC для ввода символа ):

Также предусмотрена возможность указания направления предела.

Значение 1 означает приближение слева:

Значение −1 означает приближение справа:

Используем функцию HoldForm для предотвращения вычисления выражения (функция TraditionalForm использует классическую математическую нотацию):


Производные ↑top↑

Для расчета производных используется функция D:

Или штрих в традиционной нотации:

Дифференцирование работает также для пользовательских функций:

Производные можно использовать в явном виде для построения графиков:

Рассчитаем производную более высокого порядка с использованием функции:

Или несколько раз запишем символ штриха:

Также, как и в предыдущих разделах, формулы математического анализа доступны через естественную форму ввода:


Интегралы ↑top↑

Вычислим интеграл с использованием функции Integrate:

Или набрав ESC intt ESC для создания заполняемого математического шаблона (подробная информация о заполняемых шаблонах представлена в разделе Математическая нотация):

Для задания определенного интеграла наберем ESC dintt ESC и укажем нижний и верхний пределы интегрирования:

Используем функцию NIntegrate для получения численного решения:


Последовательности, суммы и ряды ↑top↑

В Языке Wolfram целочисленные последовательности представлены в виде списков.

Используем функцию Table для задания простой последовательности:

Некоторые известные последовательности уже встроены в язык:

Для задания рекурсивных последовательностей используем функцию RecurrenceTable (обратите внимание на использование нотации {x,min,max}):

Вычислим сумму всех элементов последовательности, используя функцию Total:

Вычислим сумму элементов последовательности, используя функцию Sum и производящую функцию:

Используйте ESC sumt ESC для создания заполняемого шаблона:

Существует возможность задания вложенных и неопределенных сумм:

Найдем производящую функцию для последовательности:

Сгенерируем степенной ряд для представления практически любой комбинации встроенных функций:

O[x]9 представляет член высшего порядка; используем функцию Normal для того, чтобы отбросить его:

Если функции Series передать неизвестную или неопределенную функцию, то она вернет степенной ряд в терминах производных:

Сходящийся ряд может упрощаться автоматически:


Специализированные двумерные графики ↑top↑

Функция ParametricPlot позволяет создавать параметрические графики:

Функция ContourPlot позволяет построить график линий уровня:

Функция DensityPlot строит непрерывный график - диаграмму плотности функции:


Трехмерные графики ↑top↑

Функция Plot3D используется для построения трехмерных графиков в декартовых координатах:

С помощью функции ParametricPlot3D построим трехмерную пространственную кривую:

Для работы в сферических координатах используется функция SphericalPlot3D:

Функция RevolutionPlot3D строит поверхность вращения с использованием заданного выражения:


Функции нескольких переменных ↑top↑

Функция D позволяет также рассчитывать частные производные - необходимо только уточнить по каким переменным дифференцировать:

Также можно использовать символ (наберите ESC pd ESC для ввода символа и CTRL + - для ввода нижнего индекса):

Кратные интегралы используют такую же нотацию, как и обычные интегралы (наберите ESC int ESC для ввода символа и ESC dd ESC для ввода символа d):

Символьные результаты часто бывают достаточно сложными

В таких случаях можно использовать функцию N для получения приближенного решения:


Векторный анализ и визуализация ↑top↑

В Языке Wolfram n-мерные вектора представляются в виде списков длиной n.

Вычислим скалярное произведение двух векторов:

Для расчета векторного произведения необходимо ввести символ ESC cross ESC:

Вычислим норму вектора:

Найдем проекцию вектора на ось x:

Найдем угол между двумя векторами:

Рассчитаем градиент вектора (для ввода символа , наберите ESC grad ESC):

Вычислим дивергенцию или ротор векторного поля:

Язык Wolfram содержит встроенные функции для визуализации двумерных и трехмерных векторных полей:


Построим сечения векторного поля:


Дифференциальные уравнения ↑top↑

Язык Wolfram позволяет решать обыкновенные дифференциальные уравнения, дифференциальные уравнения в частных производных и уравнения с запаздыванием.

Функция DSolveValue возвращает решение дифференциального уравнения в общем виде (C[1] - константа интегрирования):

Используем символ /. для замены константы:

Или добавим начальные условия для получения частного решения:

Функция NDSolveValue позволяет находить численные решения:

Объект InterpolatingFunction можно визуализировать без дополнительной обработки:

Для решения систем дифференциальных уравнений, необходимо использовать списки для задания уравнений и условий (обратите внимание, что перенос уравнений на новую строку не влияет на результат):

Построим решения системы в виде параметрического графика:


Комплексные числа ↑top↑

Мнимая единица $\sqrt{-1}$ представлена символом I:

Большинство операций автоматически поддерживают работу с комплексными числами:

Разложим комплексное выражение:

Перевод выражения из экспоненциальной формы в тригонометрическую и обратно:

Наберем ESC co ESC для ввода символа сопряженности:

Выделим действительную и мнимую части выражения:

Или вычислим абсолютное значение и аргумент комплексного числа:

Построим конформное отображение с помощью функции ParametricPlot:

Используем функцию AbsArg при построении графика PolarPlot:

Визуализируем мнимую компоненту, используя функцию DensityPlot:


Матрицы и линейная алгебра ↑top↑

В Языке Wolfram матрицы представляются как списки списков:

Их можно вводить в табличном виде, используя CTRL + ENTER для добавления строк и CTRL + , для добавления столбцов:

Функция MatrixForm позволяет отобразить матрицу в классическом виде:

Матрицы можно создавать с помощью итерационных функций:

Или импортировать данные, которые представляют собой матрицу:

IdentityMatrix, DiagonalMatrix и другие встроенные функции используются для создания матриц специального вида.

Стандартные матричные операции работают поэлементно:

Вычисление произведения двух матриц:

Вычисление детерминанта:

Поиск обратной матрицы:

Функция LinearSolve используется для решения систем линейных уравнений:

Реализованы также функции для минимизации и декомпозиции матриц.


Дискретная математика ↑top↑

Выполним ряд базовых операций теории чисел, например, факторизацию целого числа:

Найдем наибольший общий делитель GCD (или наименьший общий делитель LCM) любых двух целых чисел:

Отобразим 4-е простое число:

Проверим является ли это число простым:

Аналогичный тест реализован и для взаимно простых чисел:

Используем функцию Mod для определения остатка от деления:

Получим все возможные перестановки списка:

Применим функцию Permute к списку c использованием функции Cycles (функция Cycles в качестве аргумента принимает список списков):

Найдем порядок перестановки:

Сгенерируем граф из списка ребер (используйте ESC ue ESC для ввода неориентированного ребра или ESC de ESC для ввода ориентированного ребра):

Найдем кратчайший путь между двумя вершинами:

Исследуем хорошо известные графы, используя естественную форму ввода:

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


Вероятности ↑top↑

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

Вычислим факториал, используя классическую математическую нотацию:

Для расчета числа комбинаций используем Binomial:

Вычислим вероятность для биномиального распределения (наберите ESC dist ESC для ввода символа ~):

Рассчитаем ожидание для полиномиального выражения:

Вычислим функцию распределения вероятности PDF для нормального распределения в символьной форме:

Построим график результата:

Естественная форма ввода может использоваться для расчета вероятностей каких-либо реальных событий:


Статистика ↑top↑

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

Вычислим среднее значение элементов списка:

Определим степень корреляции двух списков:

Рассчитаем среднеквадратичное отклонение для распределения Пуассона:

Вычислим момент случайной величины списка символов:

Найдем производящую функцию момента для распределения (наберите ESC m ESC для ввода μ и ESC s ESC для ввода σ):

Сгенерируем статистические данные с помощью функции RandomVariate (используйте функцию //Short для получения краткой информации о результате):

Визуализируем полученные данные:


Функции для визуализации данных и аппроксимации кривых ↑top↑

Используем функцию ListPlot для построения точечной диаграммы:

Или представим информацию в виде столбиковой диаграммы:

Также предусмотрены специализированные функции для визуализации временных рядов, финансовых данных и много другого.

Несколько наборов данных автоматически выделяются разными цветами:

Внешний вид графиков можно настраивать с помощью опций, таких как PlotTheme.

Найдем кривую, которая наилучшим образом описывает данные, используя функцию Fit (список {1,x,x2} означает что ищется аппроксимация в виде полинома второго порядка):

Используем функцию Show, чтобы сравнить полученную аппроксимацию с исходными данными:


Теория групп ↑top↑

SymmetricGroup, AlternatingGroup, DihedralGroup и многие другие именованные группы уже встроены в Язык Wolfram.

Выведем список элементов группы:

Определим генератор группы:

Создадим группу перестановок из двух генераторов:

Вычислим ее порядок:

Отобразим таблицу умножения группы:

Визуализируем ее с помощью графа Кэли:


Математические головоломки ↑top↑

Язык Wolfram является идеальной платформой для решения сложных и интересных математических головоломок. Исследование и решение таких задач становится простым как только Вы освоили базовые принципы языка.

Предположим необходимо найти количество положительных целых чисел до 1 000 000 у которых нет общих делителей с 1 000 000.

Для начала проверим все положительные целые числа в заданном диапазоне, используя функцию CoprimeQ:

Уберем все значения False, заменив их значением Nothing:

Затем рассчитаем длину Length полученного списка:

И объединим все шаги в одно выражение:

Символьные выражения зачастую поддаются прямым подходам. Пусть задано положительное целое число k, можно ли найти общую формулу для суммы 1k+2k+...+nk?

Решение для k=2:

Общее решение - это n-ое гармоническое число порядка −k:

Используя встроенную графику, также легко можно решить и визуализировать геометрические задачи. Рассмотрим следующую фигуру:

При заданной длине основания n, возможно ли заполнить данную фигуру такими же фигурами но с длиной основания 1?

Решение для n=2:

Решение для n=3:

Известные задачи и головоломки доступны через естественную форму ввода:

Большое число различных углубленных примеров доступно на Wolfram Demonstrations Project.


Интерактивные модели ↑top↑

Функция Manipulate позволяет создавать интерактивные объекты для исследования их поведения в реальном времени:

Одна функция Manipulate может включать в себя несколько контроллеров, а Язык Wolfram автоматически выбирает для них оптимальное расположение:

Любое выражение на Языке Wolfram можно сделать интерактивным, а не только объекты визуализации:


Математическая нотация ↑top↑

Используйте комбинации клавиш (такие как CTRL + / для ввода обыкновенных дробей) для создания заполняемых математических шаблонов (нажмите на один из квадратиков, чтобы ввести значение, затем нажмите клавишу TAB для перемещения между полями):

Простой способ ввода степени (CTRL + 6) или нижнего индексы (CTRL + -) и других стандартных выражений.

При нажатии клавиши ESC в рабочем документе появляется символ ⋮, который обозначает начало ввода специальных комбинаций клавиш ⋮условное обозначение⋮ (зачастую в документации присутствует следующее обозначение ESCусловное обозначениеESC).

При вводе правильного условного обозначения, выражение автоматически заменяется на нужный шаблон после повторного ввода символа ⋮ (условное обозначение для “частной производной” - “pd”):

Суммы, интегралы и другие подобные выражения генерируются следующим образом (условное обозначение для “определенного интеграла” - “dintt”):

Многие греческие буквы и другие специальные символы также доступны через эту форму.

В рабочем документе на локальном компьютере Вы можете выбрать пункт меню “Basic Math Assistant” из Меню Palettes для обзора доступных шаблонов.

При нажатии на кнопку с шаблоном, он автоматически подставляется на место текущего положения курсора:

Используем функцию TraditionalForm для отображения любого выражения в традиционной математической нотации:

Существующие ячейки можно перевести в TraditionalForm, используя комбинацию клавиш SHIFT + CMD + T (выражения, представленные в TraditionalForm, также являются вычислимыми):


📡 Контакты автора:

VK Badge      Telegram Badge      Instagram Badge      Facebook Badge

About

Wolfram programming course. Syntax and features of the language. Basic algorithms and structures in this language. And also a lot of other interesting things. 📏

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published