Алгебра. Замена выражений в формулах.
Присваивание, или функция Set, задает глобальную подстановку, т.е. такую подстановку, которая выполняется во всех последующих вычислениях до ее явной отмены. Если же подстановку одного выражения вместо другого нужно сделать в одном конкретном выражении или же в нескольких, то удобнее использовать функцию Rule.
Выражение Rule [левая часть, правая часть], записываемое также в виде левая часть › правая часть, задает правило, в соответствии с которым вместо левой части подставляется вычисленная правая часть. При этом правая часть вычисляется в момент вызова функции Rule. Если правую часть нужно вычислять в момент применения правила, то нужно вызвать не функцию Rule, а функцию RuleDelayed, вызов которой можно записать в виде левая часть: > правая часть.
Для всех дальнейших вычислений х сохраняет свое значение.
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 а.