Re: symbolic calculations with complex numbers
- To: mathgroup at smc.vnet.net
- Subject: [mg32079] Re: symbolic calculations with complex numbers
- From: Sotirios Bonanos <sbonano at mail.ariadne-t.gr>
- Date: Sat, 22 Dec 2001 04:22:54 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I understand you want to carry out general manipulations with complex symbols and not just calculate the Abs of an expression. In that case it is best to define your own Re, Im, Abs functions using a function, Bar[], which converts an expression to its complex conjugate. Depending on the symbols / expressions you use, you can make modifications to the definition of Bar to force it to behave the way you want. Copy and paste the text following (*************) in a new Mathematica notebook to see 2 examples of what I mean. Regards, Sotirios Bonanos http://www.demokritos.gr/people/sbonanos.html (*************) Notebook[{ Cell[BoxData[ \( (**\ Define\ complex\ conjugate\ operation\ \*"\""Bar \*"\"\<\> "**) \)], "Input", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(SetAttributes[Bar, {Listable}]; \nBar[Bar[x_]] = x; \n Bar[Complex[u_, v_]] := Complex[u, \(-v\)]; \n Bar[x_Plus | x_Times | x_Power | x_Rule | x_Equal] := Bar/@x; \)], "Input"], Cell[BoxData[ \(\( (**\ Case\ I : \ All\ symbols\ used\ are\ real\ **) \n \(Bar[x_] := x; \)\)\)], "Input"], Cell[BoxData[ \(\n\)], "Input"], Cell[BoxData[ \( (*\(*\ Use\ Bar\ to\ define\ Re\), \ Im, \ Abs\ **) \)], "Input", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(myRe[x_] := Simplify[\((x + Bar[x])\)/2]; \)\)], "Input"], Cell[BoxData[ \(\(myIm[x_] := Simplify[\((x - Bar[x])\)/\((2 I)\)]; \)\)], "Input"], Cell[BoxData[ \(\(myAbs[x_] := Sqrt[Simplify[myRe[x]^2 + myIm[x]^2]]; \)\)], "Input"], Cell[BoxData[ \(\n\)], "Input"], Cell[BoxData[ \( (**\ EXAMPLES\ **) \)], "Input", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(myRe[\((x + I\ y)\)^3]\)], "Input"], Cell[BoxData[ \(x\^3 - 3\ x\ y\^2\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(myIm[\((x + I\ y)\) + a^2/\((x + I\ y)\)]\)], "Input"], Cell[BoxData[ \(\(y\ \((\(-a\^2\) + x\^2 + y\^2)\)\)\/\(x\^2 + y\^2\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(myAbs[a \((x - a + I\ y)\) + I\ b \((y - b + I\ x)\)]\)], "Input"], Cell[BoxData[ \(\@\(\((a\^2 - a\ x + b\ x)\)\^2 + \((\(-b\^2\) + a\ y + b\ y)\)\^2\)\)], "Output"] }, Open ]], Cell[BoxData[ \(\(\n\n\)\)], "Input"], Cell[BoxData[ \( (**\ Case\ II : \ Complex\ symbols\ have\ the\ form\ z[i_]\ **) \)], "Input", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(Clear[Bar]; \)\)], "Input"], Cell[BoxData[ \(SetAttributes[Bar, {Listable}]; \nBar[Bar[x_]] = x; \n Bar[Complex[u_, v_]] := Complex[u, \(-v\)]; \n Bar[x_Plus | x_Times | x_Power | x_Rule | x_Equal] := Bar/@x; \)], "Input"], Cell[BoxData[ \(\(Bar[x_] := x /; Head[x] =!= z; \)\)], "Input"], Cell[BoxData[ \(\n\)], "Input"], Cell[BoxData[ \( (**\ THEN\ **) \)], "Input", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(myRe[z[1] + I\ z[2]]\)], "Input"], Cell[BoxData[ \(1\/2\ \((Bar[z[1]] - I\ Bar[z[2]] + z[1] + I\ z[2])\)\)], "Output"] }, Open ]], Cell[BoxData[ \(\(zTOxy = {z[1] -> x1 + I\ y1, z[2] -> x2 + I\ y2}; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Together[%% /. %]\)], "Input"], Cell[BoxData[ \(x1 - y2\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(myIm[z[1]^2 + I\ z[2]^2 /. zTOxy]\)], "Input"], Cell[BoxData[ \(x2\^2 + 2\ x1\ y1 - y2\^2\)], "Output"] }, Open ]] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 1024}, {0, 748}}, WindowSize->{956, 721}, WindowMargins->{{4, Automatic}, {Automatic, 2}}, MacintoshSystemPageSetup->"\<\ 00000000000000000NHh00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000\>" ]