aar писал(а):Код: Выделить всё
> evalc(H22);
(3/8)*z1^4*p+(9/4)*p*z1^2*z2^2+3*q*z1^3*z2-(9/8)*p*z2^4-(9/16)*z1^4-(27/8)*z1^2*z2^2-(9/16)*z2^4
Я тоже думал, что evalc упрощает заданное выражение. Я грубо ошибался. В следующем коде сравнивается упрощение результата подстановки значений в исходное выражение и выражение, полученное в результате применения evalc. Результаты не совпадают.
Код: Выделить всё
> restart;
> H22 := 3/8*conjugate(z1)^2*p*z1^2+3/8*conjugate(z1)^2*p*z2^2+3/2*conjugate(z1)^2*q*z1*z2+3/2*conjugate(z1)*p*z1*z2*conjugate(z2)+3/2*conjugate(z1)*q*z1^2*conjugate(z2)+3/8*p*z1^2*conjugate(z2)^2-9/8*p*z2^2*conjugate(z2)^2-9/16*conjugate(z1)^2*z1^2-9/16*conjugate(z1)^2*z2^2-9/4*conjugate(z1)*z1*z2*conjugate(z2)-9/16*z1^2*conjugate(z2)^2-9/16*z2^2*conjugate(z2)^2;
> simplify(subs(z1=1, z2= I, H22));
-9/4
> simplify(subs(z1=0, z2= I, evalc(H22)));
-9/8*p-9/16
В справке (Maple 7, Maple 12) написано:
“The fundamental assumption that evalc makes is that unknown variables represent real-valued quantities” [«Основное предположение, которое делает evalc, заключается в том, что неизвестны переменные представляют действительные значения величин»]. Т.е. z1 и z2, в рассматриваемом примере, считаются действительными, поэтому результаты и не совпадают.