From: <fi...@ig...> - 2024-04-09 17:26:41
|
Dear Stavros, On 2024-04-09 11:50, Stavros Macrakis wrote: > Maxima is not very smart about the *conjugate* function. If you want to > find a real expression for the absolute value of a complex expression, try > *cabs*: Thank you for this advice. > depends([x,y],t) => [x(t), y(t)] > > cabs(x+%i*y) => > 2 2 > sqrt(y + x ) > > diff(%,t) => > > dy dx > 2 y -- + 2 x -- > dt dt > --------------- > 2 2 > 2 sqrt(y + x ) unfortunately cabs(f) only works if f can be disassembled into real and imaginary part. If we only know, that f is complex, we get: declare(f, complex, t, real); /* to be as clear as possible */ done depends(f, t); [f(t)] diff(cabs(f), t); df f -- dt ------ abs(f) This in general is not correct, or am I wrong? The result is the same using abs(f). Best regards Torsten > > Dear Maxima Users, > > > > I am a little confused about Maxima's understanding of the abs() function. > > > > Consider a complex function f = x + i y where x and y depend on some > > real parameter t. What should the first derivative df/dt be? Shouldn't > > it be purely real? > > > > (%i1) depends([x, y], t); > > (%o1) [x(t), y(t)] > > (%i2) f : x + %i * y; > > (%o2) %i y + x > > (%i3) diff(abs(f), t); > > dy dx > > (%i y + x) (%i -- + --) > > dt dt > > (%o3) ----------------------- > > abs(%i y + x) > > (%i4) expand(%); > > dy dy dx dx > > y -- %i x -- %i -- y x -- > > dt dt dt dt > > (%o4) (- -------------) + ------------- + ------------- + ------------- > > abs(%i y + x) abs(%i y + x) abs(%i y + x) abs(%i y + x) > > > > > > Oops! Maxima tells me, that the first derivative is not real but has > > an imaginary part! > > > > What would be my mistake? Did I miss something in the documentation > > about complex derivatives? I would like to apologize in advance. > > > > For my understanding the following equation for some complex number z > > holds: > > > > abs(z) = sqrt(z conj(z)) > > > > right? > > > > So we try > > > > (%i5) diff(sqrt(f * conjugate(f)), t); > > dy dx dx dy > > (x - %i y) (%i -- + --) + (%i y + x) (-- - %i --) > > dt dt dt dt > > (%o5) ------------------------------------------------- > > 2 sqrt((x - %i y) (%i y + x)) > > (%i6) expand(%); > > dy dx > > y -- x -- > > dt dt > > (%o6) ------------- + ------------- > > 2 2 2 2 > > sqrt(y + x ) sqrt(y + x ) > > > > > > The expected result; and purely real. > > > > BTW.: For Maxima the following is not evaluated to zero: > > > > (%i7) abs(f) - sqrt(f * conjugate(f)); > > (%o7) abs(%i y + x) - sqrt((x - %i y) (%i y + x)) > > > > Why this? > > > > > > Any advice appretiated and best regards > > > > > > Torsten > > > > > > > > > > -- > > ------------------------------------------------------------------------ > > Torsten Finke > > fi...@ig... > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > Maxima-discuss mailing list > > Max...@li... > > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > -- ------------------------------------------------------------------------ Torsten Finke fi...@ig... ------------------------------------------------------------------------ |