Reputation: 221
When i type the following code maple does not evaluate the limit but it clearly exists.
> restart;
> omega := proc (x, y) options operator, arrow; 2*[x, y, 1]/(1+x^2+y^2) end proc;
> phi := proc (x, y) options operator, arrow; Re((lambda*(x+I*y)+a+I*b)/(1-lambda*(a-I*b)* (x+I*y))), Im((lambda*(x+I*y)+a+I*b)/(1-lambda*(a-I*b)*(x+I*y))) end proc;
> Omega := limit(omega(phi(x/(e^2*(x^2+y^2)), y/(e^2*(x^2+y^2)))), e = 0);
Thanks for helping me.
Upvotes: 0
Views: 448
Reputation: 7271
You appear to be attempting to map the various operations over a list, as evidenced by your use of [x,y,1]
in the numerator of the expression in the body of omega
.
But *
, /
, and limit
will not automatically map over a list.
You can map the *
and /
by either using expand
or the elementwise syntax *~
and /~
. For taking the limit I use the map
command below.
If you didn't intend to map operations over a list then please explain what you intended by [x,y,1]
.
Note also that the limit as e->0
can be obtained by Maple if various assumptions are made, or if certain "simplifications" (by evalc
, which acts as if unknowns are real) are done prior to calling limit
. By default Maple would otherwise consider the variables other than e
as being complex.
restart;
omega := (x, y) -> expand( 2*[x, y, 1]/(1+x^2+y^2) ):
#omega := (x, y) -> 2*~[x, y, 1]/~(1+x^2+y^2):
phi := (x, y) -> (Re((lambda*(x+I*y)+a+I*b)/(1-lambda*(a-I*b)*(x+I*y))),
Im((lambda*(x+I*y)+a+I*b)/(1-lambda*(a-I*b)*(x+I*y)))):
expr := omega(phi(x/(e^2*(x^2+y^2)), y/(e^2*(x^2+y^2)))):
map(limit,expr,e=0) assuming real;
[ / 2 2\]
[ 2 a 2 b 2 \a + b /]
[- -----------, - -----------, -----------]
[ 2 2 2 2 2 2 ]
[ a + b + 1 a + b + 1 a + b + 1]
newexpr := evalc(expr):
map(limit,newexpr,e=0);
[ / 2 2\]
[ 2 a 2 b 2 \a + b /]
[- -----------, - -----------, -----------]
[ 2 2 2 2 2 2 ]
[ a + b + 1 a + b + 1 a + b + 1]
Let us know, if you had something else in mind.
Upvotes: 1