Может кто-то может объяснить мне, почему Replace
дает другой ответ, чем ReplaceAll
, хотя я использую одно правило, и, я думаю, у меня есть одно выражение.
Согласно документации:
ReplaceAll looks at each part of expr, tries all the rules on it, and then goes on to
the next part of expr. The first rule that applies to a particular part is used; no
further rules are tried on that part, or on any of its subparts
и для замены
A list of rules can be given. The rules are tried in order. The result of the first
one that applies is returned. If none of the rules apply, the original expr is
returned.
У меня есть это выражение:
z/(0.5 -1.4 z+z^2)
и это одно правило
z -> Exp[I*w]
Следующий вход
Clear[z]
hz = z/(0.5 - 1.4 z + z^2);
Replace[hz, z -> Exp[I*w]]
ReplaceAll[hz, z -> Exp[I*w]]
дает этот результат:
z/(0.5 -1.4 z+z^2) (*from Replace*)
E^(I w)/(0.5 -1.4 E^(I w)+E^(2 I w)) (*from ReplaceAll*)
Итак, ReplaceAll
выполнил задание, которое я ожидал, но не Replace
. Единственное, что, я думаю, здесь отсутствует, - это то, что делает части выражения. Так может быть, hz не является "одним" выражением? Хорошо, хорошо, но тогда он должен был бы применить правило, по крайней мере, к одной его части. Но он ничего не заменил
FullForm[hz]
Times[z,Power[Plus[0.5`,Times[-1.4`,z],Power[z,2]],-1]]
Разве это не одно выражение? Если нет, сколько у него частей? Является ли это числом листьев в конце графика, сгенерированным TreeForm[hz]
? Если да, то я вижу там 3 'z', а Replace[]
должен заменить один из них
Я всегда использовал /.
, не думая об этом, что совпадает с ReplaceAll
, но теперь я использовал Replace[]
, мышление было таким же, как /.
, я нашел это и заметил разные функции.
(так много функций, чтобы учиться, так мало времени:)