Клен: упрощение Im (a + I * b) - почему это не работает для меня? - PullRequest
0 голосов
/ 10 сентября 2011

Итак, я хочу упростить z:=a+I*b; Im(z), где a, b - реальные переменные. Поэтому я стараюсь:

s:= 1+2*I
Im(s) // outputs 2
z:=a+I*b
Im(z) // outputs  Im(a+I*b)

Так что мне интересно, можно ли как-нибудь упростить Im(z), чтобы получить b в качестве вывода (здесь мы рассмотрим общий случай, означающий, что z может быть любым сложным выражением из реальных значений (например, a, b) , c и т. Д. И комплекс I))?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Вы не сказали Maple, что a и b были реальными, поэтому упрощение не работает, потому что оно не обязательно выполняется.Один из способов получить то, что вы хотите, - использовать команду accept, чтобы сообщить:

> s:=1+2*I;
                                 s := 1 + 2 I

> Im(s);
                                       2

> z:=a+I*b;
                                 z := a + b I

> Im(z);
                                  Im(a + b I)

> assume(a,real);
> assume(b,real);
> z;
                                   a~ + b~ I

> Im(z);
                                      b~
1 голос
/ 11 сентября 2011

Команда evalc работает, считая неизвестные действительными.

z:=a+I*b:

Im(z);
                             Im(a + I b)

evalc( Im(z) );
                                  b

См. Его справочную страницу, ? Evalc .

...