ComplexExpand
- To: mathgroup@smc.vnet.net
- Subject: [mg12275] ComplexExpand
- From: Jack Goldberg <jackgold@math.lsa.umich.edu>
- Date: Tue, 5 May 1998 03:30:12 -0400
Hi Group;
I have found ComplexExpand useful and sometimes necessary. (Try DSolve[
u''[t]+u'[t]+u[t]==0,u[t],t] to see why something like ComplexExpand
is necessary.) The reason for this post is that I would like to share
with those interested in these things, some uses that I have found for
ComplexExpand that do not seem to be explicit in the literature that I
have seen. Here are a group of functions that assume all variable are
real unless explicitly stated to the contrary in the manner of
ComplexExpand.
(1) RealPart[z_] := ComplexExpand[ Re[z] ]
(2) ImaginaryPart[z_] := ComplexExpand[ Im[z] ]
(3) From these two functions it is easy to define, AbsoluteValue,
CartesianForm and ComplexConjugate to supplement the limitations of the
built-in functions Abs and Conjugate. For example,
CartesianForm[z_] := RealPart[z]+I*ImaginaryPart[z]
These functions have some amusing features. Here is one trivial
example. When ComplexExpand is applied to (1+2I)*Exp[I*x] we get the
mildly unsatisfactory
(1+2I)*Cos[x]-(2-I)*Sin[x]
(I have been unable to use any form of Collect or Expand to separate the
real and imaginary parts.) However,
CartesianForm[(1+2I)*Exp[I*x]] -> Cos[x]-2Sin[x]+I(2Cos[x]+Sin[x])
does the job nicely.
I have tested these functions fairly extensively and found they work
without untoward surprises. But in doing so I have run into a minor
"weaknesses" of ComplexExpand that I would like to see Wolfram
incorporate into some later version. In particulular, ComplexExpand
does not simplify Abs[x+I*y] nor does it simplify
Cos[Arg[Cos[x]+I*Sin[x]]]. I would like to see this:
ComplexExpand[Abs[x+I*y]] -> Sqrt[x^2+y^2]
and
ComplexExpand[Cos[Arg[Cos[x]+I*Sin[x]]]] -> x
as well as similar identities using Sin or Tan in place of the first Cos
in the latter formula.
I have incorporated these and similar rules into my use of RealPart
etc. and founda substantial simplification is possible. Consider,
ComplexExpand[(Cos[x]+I*Sin[x])^(1/3)]
with and without these simmplification rules!
Oh yes. After using DSolve as above, try out
RealPart[u[t]/."output of DSolve"]
I hope this is useful to someone. If anyone out there has done some
thinking about these issues and would like to share them with me and
the group, I would be delighted. I am most interested in corrections
and improvements!
Jack Goldberg
- Follow-Ups:
- Re: ComplexExpand
- From: MJE <evans.nospam@gte.net>
- Re: ComplexExpand
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: ComplexExpand