Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Create and Use Rules - Wolfram Mathematica

Создание и использование правил

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

Краткая форма для записи правила использует правую стрелку, которая создается вводом -> (без пробелов между - и >). Пользовательский интерфейс Mathematica автоматичес ки преобразует -> в ? как только Вы продолжите ввод символов с клавиатуры. Оба символа являются краткой формой записи функции Rule.

Создадим следующее правило преобразования, которое может быть озвучено как  "x преобразуется в 3":

In[1]:=

CreateAndUseRulesRU_1.gif

Out[1]=

CreateAndUseRulesRU_2.gif

Глядя на строку вывода для x?3, Вы замечаете, что правило ничего не делает: вывод является сами правилом. Это происходит потому, что правила ничего не делают, будучи сами по себе. Вам нужно использовать правило вместе с выражением, для которого правило было создано, чтобы извлечь из него пользу.

Правила могут быть применены к выражению при помощи /. (это краткая форма записи функции ReplaceAll). Общий синтаксис этой функции следующий:  выражение/.правило() (или  expr/.rules).

Используем /. для того, чтобы применить правило к выражению:

In[57]:=

CreateAndUseRulesRU_3.gif

Out[57]=

CreateAndUseRulesRU_4.gif

Чтобы применить два и более правила к выражению, поместите их в список {}:

In[58]:=

CreateAndUseRulesRU_5.gif

Out[58]=

CreateAndUseRulesRU_6.gif

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

In[59]:=

CreateAndUseRulesRU_7.gif

Out[59]=

CreateAndUseRulesRU_8.gif

Вы можете заменять переменные на любое выражение, а не только на отдельные значения.

Заменим x на 3y:

In[60]:=

CreateAndUseRulesRU_9.gif

Out[60]=

CreateAndUseRulesRU_10.gif

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

In[62]:=

CreateAndUseRulesRU_11.gif

Out[62]=

CreateAndUseRulesRU_12.gif

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

Заменим x на 3:

In[65]:=

CreateAndUseRulesRU_13.gif

Out[65]=

CreateAndUseRulesRU_14.gif

Используем правило для f[x]. Обратите внимание, что это правило сопоставлено именно выражению f[x] и не влияет на f[y]:

In[64]:=

CreateAndUseRulesRU_15.gif

Out[64]=

CreateAndUseRulesRU_16.gif

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

Правило f[x_]?x^2 может быть интерпретировано как "f[любое] заменяется на любое^2":

In[18]:=

CreateAndUseRulesRU_17.gif

Out[18]=

CreateAndUseRulesRU_18.gif

Для получения дополнительной информации по использованию шаблонов, смотри раздел Introduction to Patterns.

    

Правила, которые задаются при помощи ? являются правилами немедленного действия. Это значит, что правая часть вычисляется при задании правила:

In[1]:=

CreateAndUseRulesRU_19.gif

Out[1]=

CreateAndUseRulesRU_20.gif

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

Краткой формой записи для отложенного правила является :> (без пробелов между : и >). Пользовательский интерфейс Mathematica автоматически преобразует :> в :? при продолжении ввода с клавиатуры. Обе комбинации символов являются краткой формой записи функции RuleDelayed:

In[2]:=

CreateAndUseRulesRU_21.gif

Out[2]=

CreateAndUseRulesRU_22.gif

Рассмотрим пример, в котором требуется использовать правило для генерации трех действительных чисел в диапазоне от 0 до 1. При использование простого правила, результатов; будет генерация трех одинаковых чисел:

In[3]:=

CreateAndUseRulesRU_23.gif

Out[3]=

CreateAndUseRulesRU_24.gif

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

In[4]:=

CreateAndUseRulesRU_25.gif

Out[4]=

CreateAndUseRulesRU_26.gif

    

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

Используйте = для того, чтобы назначить для x значение 3, а затем рассчитайте x, чтобы видеть его значение:

In[19]:=

CreateAndUseRulesRU_27.gif

In[2]:=

CreateAndUseRulesRU_28.gif

Out[2]=

CreateAndUseRulesRU_29.gif

Используйте правило, чтобы присвоить значение для y:

In[20]:=

CreateAndUseRulesRU_30.gif

Рассчитав y, Вы увидите, что присвоенное правилом значение не было сохранено:

In[4]:=

CreateAndUseRulesRU_31.gif

Out[4]=

CreateAndUseRulesRU_32.gif

Для того, чтобы правило работало, его необходимо использовать вместе с выражением. При этом, Вы можете использовать символ в качестве имени для правила, а затем использова ть этот символ так же, как если бы Вы использовали правило.

Используйте = для того, чтобы назначить для n правило p?2, а затем используйте n в выражении:

In[68]:=

CreateAndUseRulesRU_33.gif

In[69]:=

CreateAndUseRulesRU_34.gif

Out[69]=

CreateAndUseRulesRU_35.gif

Так как p?2 теперь сохранено глобально как символ n, Вы можете продолжать использовать n вместо p?2.

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

In[22]:=

CreateAndUseRulesRU_36.gif

In[6]:=

CreateAndUseRulesRU_37.gif

Out[6]=

CreateAndUseRulesRU_38.gif

Это особенно удобно, если Вы планируете использовать это выражение не только в одном вычислении.