Записи с меткой «списку»

Инверсные функции

Инверсные функции
Инверсными функциями называют функции, полученные в результате обращения заданных функций. Например, для функции Sin [x] инверсной будет ArcSin [х] и т. д. Следующие функции обеспечивают представление инверсных функций:

  • InverseFunction [f ] — представляет функцию, обратную для f, то есть определенную таким образом, что InverseFunction [f ] [у] возвращает значение х, для которого f [х] равно у. Для функции нескольких переменных InverseFunction [ f ] представляет обращение по первому аргументу;
  • InverseFunction [f, n] — представляет обращение по п-му аргументу;
  • InverseFunction [f, n, tot] — представляет обращение по п-му аргументу, когда имеется всего tot аргументов.

Следующие примеры иллюстрируют работу с этими функциями.

Ввод (In)

Вывод (Out)

InverseFunction [Sin]

ArcSin

%[х]

ArcSin[x]

Composition [ f , g , h]

Ccrrposition[f , g, h]

InverseFunction [Composition [% , q] ]

Corpositiont [q- 1 , h- 1 , g- 1 ,f- 1]

Обратите внимание на то, что в этих примерах фигурируют заголовки функций — например, для получения инверсной функции от Sin [х] следует использовать
Sin в качестве аргумента f функции InverseFunction [f].
Задание математических отношений
Символьные преобразования- при всей их кажущейся таинственности осуществляются по определенным, хотя и весьма многочисленным, а потому для нас запутанным, правилам. Основные из них давно известны из математики и описаны в многочисленных справочниках и монографиях. Они записаны в ядре системы и вызываются из него при создании условий, необходимых для выполнения того или иного преобразования. Если этих условий нет, исходное выражение просто повторяется. А если обнаружена явная ошибка в преобразованиях, то о ее сути выводится соответствующее сообщение. При ситуациях, лишь близких к ошибочным, выводится предупреждающее сообщение, и вычисления продолжаются. далее…

Укороченная форма функций

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

Укороченная форма

Полная форма

f @ ехрг

f [expr]

f @@ ехрг

Apply [f, expr]

f /@ ехрг

Map[f, expr]

f //@ ехрг

MapAll [f, expr]

Смысл укороченных выражений очевиден. Приведем несколько примеров их использования.

Ввод (In)

Вывод (Out)

f@{a, b, с}

f[{a, b, c}]

f@@{a, b, c}

f [a, b, c]

f /@{a, b, c}

{f[a], f[b], f[c]}

f//@{a, b, x}

f[{f[a], f[b], f[x]}]

Укороченная форма функций может оказаться полезной для сокращения записи алгоритмов и программ.
Выделения и подстановки в функциях
Функция Slot[n], или, в укороченной форме, #n, представляет n-й аргумент функции. Это иллюстрируют следующие примеры.

Ввод (In)

Вывод (Out)

(5* Slot [1] + Slot [2] *Slot[3] A 2) &[a, b, с]

5a+bc 2

#1 A #2 S[a, b]

a b

Объект # эквивалентен #1, a #0 — заголовку абстрактной функции. Таким образом, F[#.#2]&F[a,b] эквивалентно F[a,b].
Функция SlotSequence [n], или, в укороченной форме, ##n, где п = 1, 2, …, представляет порядок применения формальных аргументов к абстрактной функции. Таким образом, объект ##n определяет последовательность аргументов, начиная с n-го.

Ввод (In)

Вывод (Out)

(Times[5, ##2] +Times[##2, ##3 A 2]) &[а, b, с]

Sbobc 3

Представленные средства обеспечивают работу с функциями на абстрактном уровне. далее…

Другие манипуляции с выражениями

Другие манипуляции с выражениями
В процессе преобразования выражений с ними возможны и иные манипуляции. Наиболее важные из них выполняются следующими функциями:

  • Append [expr, elem] — возвращает ехрг с дополнением elem;
  • AppendTo [s, elem] — добавляет elem к значению s и присваивает s новое значение;
  • Apply [f, expr, levelspec] — возвращает ехрг, замещая заголовки в тех частях ехрг, которые указаны спецификацией уровня levelspec;
  • Cancel [expr] — возвращает ехрг с сокращением общих множителей числителя и знаменателя;
  • Cases [expr, pattern, levelspec] — возвращает список всех частей выражения expr на уровнях, указанных спецификацией levelspec, которые соответствуют шаблону pattern;
  • Chop [expr] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше 10 -10 ;
  • Chop [expr, tol ] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше tol;
  • Replace [expr, rules] — возвращает expr с подстановкой, заданной правилом или списком правил rules;
  • ReplaceAll — используется в виде expr /. rules и возвращает expr с подстановками, заданными правилом или списком правил rules;
  • ReplacePart [expr, new, n] — возвращает выражение, в котором п-я часть expr заменена на new;
  • ReplacePart [expr, new, {i, j,…}] — заменяет на new часть в позиции {i, j,…};
  • ReplacePart [expr, new, {{il, jl,…}, {i2, j 2 ,…},…}] — заменяет на new части в нескольких позициях выражения;
  • ReplaceRepeated — применяется в виде expr //. rules и неоднократно выполняет замещения до тех пор, пока expr не перестанет изменяться.

Действие этих функций достаточно очевидно и поясняется следующими примерами.

Ввод (In)

Вывод (Out)

Append [a + с, b]

a+ b+ с

х = {а, b, с}

{a, b, c}

AppendTo [ х , 15 ]

{a, b, c, 15}

x

{a, b, c, 15}

Apply[f, а А 2 + b ^ 2, 2]

f[a, 2] +f[b, 2]

Cancel [(z-1) ^ 2/ (z — 1) ]

-1 + Z

Cases[{a, 3.5, 2, 5, "HELLO"}, _Integer]

{2, 5}

Exp[N[-лI]]

-1. — 1. 22461 x 10 -16 I

Chop[%]

-1.

Ехр[N[-лI]]

-1. — 1. 22461 x10 16 I

Chop[%, 1*10^-10]

-1.

Replace[s ^ 2, s ^ 2 -> a]

a

s^2 /. s -> a

a 2

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

  • AtomQ [expr] — возвращает True, если выражение ехрг не может быть разложено на подвыражения и является атомарным, и возвращает False в противном случае;
  • FreeQ [expr, form] — возвращает значение True, если в выражении ехрr отсутствует подвыражение, совпадающее с form, в противном случае возвращает False;
  • FreeQ[expr, form, levelspec] — тестирует только части выражения на уровнях, указанных levelspec.

Следующие примеры показывают действие этих функций.

далее…

Основные формы записи выражений

Основные формы записи выражений
Возможны четыре основные формы записи выражений:

  • f [х, у] — стандартная форма для f [х, у];
  • f @ х — префиксная форма для f [ х ];
  • х / / f — постфиксная форма для f [ х ];
  • х ~ f ~ у — инфиксная форма для f [ х, у ].

Далее приведены примеры применения этих форм.

Ввод (In)

Вывод (Out)

F[x_] = 2*х^2

2X 2

F[a]

2a 2

a//F

2 a 2

f [x_, y_] = х^ 2 + у^2

y 2 +x 2

f[a,b]

a 2 +b 2

a-f-b

a 2 + b 2

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

Тип части

Зависимость

Пример

Function

От аргументов или параметров

Ехр[х], f [х,у]

Command

От аргументов или параметров

Expand [ (х-1) ^2]

Operator

От операндов

x + y+z, a = b

Head

От элементов

{a,b,c}

Object type

От контекста

RGBColor [r,g,b]

Работа с частями выражений напоминает работу со списками. Для выделения любой заданной части выражения используются функция Part или двойные квадратные скобки;

  • Part [expr, n] или expr [ [n] ] — выделяет п-ю часть выражения, начиная с начала;
  • expr [ [-n] ] — выделяет п-ю часть выражения, начиная с конца;
  • expr [ [nl,n2,…] ] — выделяет части выражения и показывает их в форме дерева;
  • expr [[{nl, n2,…}]] — дает комбинацию нескольких частей выражения. Приведем примеры использования этих средств.

Ввод (In)

Вывод (Out)

f :=а + b*х^2 + с*х^3

 

Part[f, 3]

ex 3

Part[f, 2]

bx 2

f[[1]]

a

f[[3]]

ex 3

f[[-1]]

ex 3

Нередко выражения рассматриваются как возможные значения переменных. В этом случае используются операторы присваивания переменным заданных значений. Mathematica имеет два типа присваивания — с помощью символов «: =» и с помощью символа «=». Они различаются временем вычисления выражения, следующего за этими символами. Знак «: =» используется для задержки присваивания до вычисления правой части, например:
f[x_] := % + 2 х
Вывода здесь нет. Продолжим наш эксперимент: 1 + у^2
1 + y2
g[х_] = % + 2 х
1 + 2 х + у2
Теперь вывод есть, так как % (ссылка на предыдущий результат) определена в виде выражения 1 + у^2 и при задании [х_] использован оператор немедленного присваивания. далее…

Компьютерная алгебра

Компьютерная алгебра

  • Работа с выражениями
  • Выделения и подстановки в функциях
  • Рекурсивные функции
  • Инверсные функции
  • Задание математических отношений
  • Упрощение выражений
  • Раскрытие и расширение выражений
  • Функции преобразования тригонометрических выражений
  • Основные операции над полиномами
  • Функции для расширенных операций с выражениями

Математические выражения — основа описания алгоритмов вычислений. Фактически, вся символьная математика основана на тех или иных видах преобразований выражений. Такие преобразования и описаны в данном уроке.
Работа с выражениями
 
Одним из важнейших понятий системы Mathematica является математическое выражение, или просто выражение — ехрг (от английского слова expression). Работа с математическими выражениями в символьном виде — основа основ символьной математики.
Выражение может быть представлено в общепринятом виде (как математическая формула или ее часть) с помощью операторов, например, а* (х + у + z) или х ^ у, оно может задавать и некоторую функцию f [х, у,…] или их комбинацию. Наряду с такой формой существует так называемая полная форма представления выражений, при которой основные арифметические операции задаются не операторами, а только соответствующими функциями. Ее примеры даны ниже.

Выражение ехрг

Полная форма ехрг

Комментарий

х + у + z

Plus [х, у, z]

Сложение

х у z

Times [x, у, z]

Умножение

х^n

Power [x,n]

Возведение в степень

{a,b,c}

List [a,b, c]

Создание списка

a->b

Rule [a,b]

Подстановка

a=b

Set [a,b]

Присваивание

Для вывода выражения ехрг в полной форме используется функция FullForm [ехрг ]. Примеры перевода выражений в полную форму:
1+х^2+(у+г)^2+2
3 + х2 + (y+z)2
FullForm[%]
Plus[3, Power[x, 2], Power[Plus[у, z] , 2]]
Integrate[a*Sin[b*x]*Exp[-c*x],x]
a [(be-cxCos[bx])/{-ib + c) (ib + c)-( ce+cxSin[bx]) \(-ib + c) (ib + c) ]
FullForm[%]
Times[a, Plus[Times[-1, b, Power[Plus[Times[Complex[0, -1], b], c] , -1], Power[Plus[Times[Complex[0, 1], b], c] , -1], Power[E, Times[-l, c, x] ] , Cos[Times[b, x] ] ] , Times[-1, c, Power[Plus[Times[Complex[0, -1], b] , c], -1] , Power[Plus[Times[Complex[0, 1] , b], c] , -1] , Power[E, Times[-1, c, x] ] , Sin[Times[b, x]]]]]
Для определения типа выражения служит функция Head [ехрr ]. Применительно к числовым выражениям она возвращает тип результата, как показано в приводимых ниже примерах.

Ввод (In)

Вывод (Out)

1+2+3

6

Head[%]

Integer

Head[123/12345]

Rational

Head[2*0.25]

Real

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

  • Head[f [x,y, z] — возвращает f;
  • Head[a+b+c] — возвращает Plus;
  • Head[x ^ n] — возвращает Power;
  • Head[ {a, b, с} ] — возвращает List.

Другая пара примеров показывает применение Head в списках с разнородными выражениями:
{Head[l + 2], Head[аЬ] , Head[ 5/7], Headfl + 3i], Head[e2]}
{Integer, Times, Rational, Complex, Power}
Head/@{l, 1/3, 2.1, 2 + 3i, x, f [x] , {1, 2, 3}, a+b, a/b}
{Integer, Rational, Real, Complex, Symbol, f, List, Plus, Times}

Обратите внимание на второй пример — в нем функция Head применяется к каждому выражению списка, что дает более компактную запись.

Построение полиэдров

Построение полиэдров
Язык программирования системы Mathematica позволят создавать средства визуального программирования графических задач. Примером таких средств является приложение Polyhedron Explorer, предназначенное для создания множества объемных фигур класса полиэдров. Это приложение (вместе с системой Mathematica, разумеется) вполне может заменить множество бумажных объемных фигур, которые можно еще встретить в кабинетах математики школ и вузов. Его можно получить по Интернету с файлового сервера фирмы Wolfram Research.
При загрузке этого приложения (как обычного документа) создается панель с окном просмотра фигуры и пультом с множеством кнопок, с помощью которых легко выбрать подходящую фигуру и наблюдать ее в окне просмотра.
Обратите внимание на кнопки внизу панели пульта (см.). Стоит нажать кнопку Paste Code, как фрагмент программы, рисующий выбранную фигуру, будет вставлен в окно редактирования документов.
Теперь достаточно выполнить этот фрагмент программы, как в строке вывода появится соответствующая фигура. Добавляя те или опции, можно получить нужные изменения ее вида. далее…