Re: Abs and derivative problems
- To: mathgroup at smc.vnet.net
- Subject: [mg14657] Re: Abs and derivative problems
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Sat, 7 Nov 1998 02:10:05 -0500
- Organization: University of Western Australia
- References: <71q9qu$j25@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
sylvan wrote:
> I could not calculate the modulus of a complex expression containing
> imaginary parts in both denominator and numerator with Mathematica. An
> Example:
>
> (a + I b) / (c + I d)
>
> a,b,c,d (real) symbolic variables.
>
> In pratice, this should be absolutely trivial. ComplexExpand is not
> effective.
> How do you "tell" mathematica that your variables are real ??
Actually, in the trivial example above, you can use
ComplexExpand[(a + I b) / (c + I d), TargetFunctions->{Re,Im}]
to get what you want.
> I included an example below (cell format, you can cut and paste).
In the Notebook fragment below, I show a simple trick for computing the
complex conjugate of complex expressions with real variables. The
basic idea is to compute the conjugate using the replacement
Complex[a_, b_] :> Complex[a, -b]
actually implemented using the built-in SuperStar function (so that you
can compute conjugates by raising them to the power *):
SuperStar[x_] := x /. Complex[a_, b_] :> Complex[a, -b]
The point then is that Abs[z]^2 = SuperStar[z] z which enables you to
quickly and efficiently compute the type of expression you want.
Notebook[{
Cell[BoxData[
\(TraditionalForm
\`\(exp =
\(b0\ \[CapitalDelta]z\
\((Es - \[ImaginaryI]\ \[Eta]\ \[Omega])\)\)\/\(\(-m\)\
\[Omega]\^2 + m\ \[Omega] -
\[ImaginaryI]\ m\ \[Gamma]\ \[Omega] +
b0\ \((Es - \[ImaginaryI]\ \[Eta]\ \[Omega])\)\); \)\)],
"Input"],
Cell[BoxData[
\(TraditionalForm
\`\(x_\^*\) := x /. Complex(a_, b_) \[RuleDelayed] Complex(a,
\(-b\))\)],
"Input"],
Cell[CellGroupData[{
Cell[BoxData[
\(TraditionalForm\`\(\(exp\^*\) exp // ExpandAll\) // Simplify\)],
"Input"],
Cell[BoxData[
\(TraditionalForm
\`\(b0\^2\ \[CapitalDelta]z\^2\
\((Es\^2 + \[Eta]\^2\ \[Omega]\^2)
\)\)\/\(\((Es\^2 + \[Eta]\^2\ \[Omega]\^2)\)\ b0\^2 +
2\ m\ \[Omega]\
\((\(-\[Omega]\)\ Es + Es + \[Gamma]\ \[Eta]\ \[Omega])\)\ b0
+
m\^2\ \((\[Gamma]\^2 + \((\[Omega] - 1)\)\^2)\)\
\[Omega]\^2\)\)],
"Output"]
}, Open ]]
}
]
> Also, replacement rules like //. z[t_] -> t^2 do not work well on
> expressions like z'[t] + b z[t]. the result is z'[t] + b t^2... I
> could not force it to Evaluate z'[t] or D[z[t], t].
One simple, general, and reasonably elegant way is to use pure
functions, e.g.,
z'[t] + b z[t] /. z -> Function[{t}, t^2]
Another is to explicitly compute all derivatives:
rule = z[t] -> t^2;
z'[t] + b z[t] /. {rule, D[rule,t]}
Cheers,
Paul
____________________________________________________________________
Paul Abbott Phone: +61-8-9380-2734
Department of Physics Fax: +61-8-9380-1014
The University of Western Australia Nedlands WA 6907
mailto:paul at physics.uwa.edu.au AUSTRALIA
http://www.physics.uwa.edu.au/~paul
God IS a weakly left-handed dice player
____________________________________________________________________