Иллюстрированный самоучитель по Mathematica 5

Алгебра. Замена выражений в формулах.

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

Выражение Rule [левая часть, правая часть], записываемое также в виде левая часть › правая часть, задает правило, в соответствии с которым вместо левой части подставляется вычисленная правая часть. При этом правая часть вычисляется в момент вызова функции Rule. Если правую часть нужно вычислять в момент применения правила, то нужно вызвать не функцию Rule, а функцию RuleDelayed, вызов которой можно записать в виде левая часть: > правая часть.

Иллюстрированный самоучитель по Mathematica 5 › Алгебра и анализ › Алгебра. Замена выражений в формулах.

Для всех дальнейших вычислений х сохраняет свое значение.

x + y
5.8598744820488384738229308546321653819544164930751 + y

Подстановки удобно задавать в виде поименованных правил. Например, можно определить подстановку r1= х › а, и после этого она может быть применена к конкретному выражению с помощью функции ReplaceAll, имеющей также постфиксную форму /.:

r1 = x > a x+1/.r1
1+a

То же самое можно сделать и так:

ReplaceAll[x + 1, r1]
1 + a

Вот пример последовательных замен.

{a,b, c}/.a > b/.b > d
{d,d,c}

Функция ReplaceAll позволяет осуществить несколько подстановок одновременно. Тогда эти подстановки должны быть оформлены в виде списка и заданы вторым аргументом этой функции. Вот пример одновременной замены:

{a,b,c}/.(a > b,b > d)
{b,d,c}

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

a
ReplaceAll [x + x2, {x > a, x2 > x} ]
a+x

Если же нужно делать подстановки повторно, необходимо использовать функцию ReplaceRepeated.

ReplaceRepeated[x + x2, {x > a, x2-x} ]
2 a

Функция ReplaceRepeated имеет постфиксную форму //..

Х + х2 //. {х › а, х2 › х}
2 а.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.