Мультимедиа: геометрия, графика, кино, звук

         

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



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



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

Вычисление выражения Set [левая часть, правая часть], или левая часть = правая часть, выполняется следующим образом. Сначала вычисляется правая часть, а затем получившийся результат (вычисленное выражение) присваивается в качестве значения невычисленной левой части. Всюду в дальнейшем левая часть, в какие бы выражения она ни входила, будет заменяться выражением, полученным в результате вычисления правой части. Левая и правая части могут быть списками, и поэтому операцию замены (подстановки) Set можно записать в виде присваивания списков {левая часть,, левая часть2, ...} = {правая часть,, правая часть2, .. .}. В этом случае результат вычисления /-и правой части будет присвоен /-и левой части. В качестве примера присвоим символу х значение а и после этого вычислим выражение (х+1)^2.
х=а а (х+1)^2 (1 + а)2
Вот более сложный случай.
{х,х}={а,b} {а,b} х^2 b^2
Обратите внимание, что никакого предупреждения не было. Это подобно тому, как в языках программирования вполне допустим оператор х = х+1 потому, что действия выполняются не одновременно, а в определенном порядке.



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

Evaluate[ff/@{a,b,с,d}]={1,23,45,678}; ff[b] 23

Как видите, теперь везде ff [b] заменяется своим значением. Пусть теперь b = 1. Заменится ли ff [1] своим значением? Оказывается, нет.

b=1

1

ff[l] ff[l]

Более того, теперь даже ff [b] не заменяется своим значением.

ff [b] ff1]

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

Иногда глобальную! подстановку нужно отменить. Если левая часть есть переменная, это можно сделать с помощью функции Clear. Вызов clear [переменная], переменная2, .. .} отменяет все подстановки значений, присвоенных переменным переменная!, переменная!, ... . Для отмены подстановки значения одной переменной можно использовать присваивание вида переменная = . b=N[Pi,50]

3.1415926535897932384626433832795028841971693993751

b=.

b

b

Присваивание вида переменная = . является синонимом выражения Unset [переменная].

b=N[Pi,50]

3.1415926535897932384626433832795028841971693993751

Unset[b]

b

b

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

Выражение Rule [левая часть, правая часть], записываемое также в виде левая часть->правая часть, задает правило, в соответствии с которым вместо левой части подставляется вычисленная правая часть. При этом правая часть вычисляется в момент

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



Содержание раздела