Re: Re: Ordering of output question
- To: mathgroup at smc.vnet.net
- Subject: [mg28281] Re: [mg28252] Re: Ordering of output question
- From: Mianlai Zhou <lailai at carmen.nikhef.nl>
- Date: Sat, 7 Apr 2001 03:44:39 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hello, I think you may be happy to use MakeBoxes to force the output of
complex number in Mathematica as "a + b i". An example is:
Unprotect[Complex];
Complex /: MakeBoxes[Complex[x_, y_], StandardForm] :=
RowBox[{MakeBoxes[x, StandardForm], " + ", MakeBoxes[y, StandardForm],
" i"}];
Protect[Complex];
But please be careful with this. Otherwise it will cause unexpected
conflicted with its internal definitions. I suggest you read the Help of
Mathematica on Format and MakeBoxes first.
Mianlai Zhou
NIKHEF, Amsterdam
On Fri, 6 Apr 2001, John Todd wrote:
> On 5 Apr 2001 03:19:53 -0400, johntodd at fake.com (John Todd) wrote:
>
> >Hello,
> > I'm trying to get the output of the following to be in
> >standard complex number form, i.e. a + ib:
>
> Actually, I made a mistake in the code I originally posted and didn't
> catch it because I hadn't restarted the kernel. It should read as
> follows:
>
> Clear[u, v, x, y, z, gRefCZ, gImfCZ, gEqRefCZ, gEqImfCZ,
> gDomToRangeRe,
> gDomToRangeIm];
> Clear[f, fCZ, fCXY];
> x /: Im[x] = 0;
> x /: Re[x] = x;
> y /: Im[y] = 0;
> y /: Re[y] = y;
> fCZ[z_] := \[ImaginaryI] z + \[ImaginaryI];
> fCXY = ComplexExpand[fCZ[x + \[ImaginaryI] y]];
> gRefCZ = Re[fCXY];
> gImfCZ = Im[fCXY];
> gEqRefCZ = u == gRefCZ;
> gEqImfCZ = v == gImfCZ;
> gDomToRangeRe = Solve[gEqRefCZ, y];
> gDomToRangeIm = Solve[gEqImfCZ, x];
> Print["Given:\nf(z) = ", fCZ[z]];
> Print["Let z = x + \[ImaginaryI]y"];
>
> (* The following line is where my question pertains*)
> Print["f(x + \[ImaginaryI]y) = ", fCZ[x + \[ImaginaryI] y], " = ",
> fCXY,
> " = ", gRefCZ, " + \[ImaginaryI](", gImfCZ, ")."];
>
> Print["The real part of f(z) = ", fCZ[z], " is ", gRefCZ,
> " and the imaginary part is ", gImfCZ, "."];
>
>
> > If you evaluate the above, you'll find that the line directly
> >below the commented line has its final outpu as -y + i(x + 1) which is
> >what I want. However, my means of getting it to look that way seem a
> >bit inelegant,, and I feel certain there is a better way. I do
> >realize that looking at the expression with TreeForm[], I can extract
> >whatever I want out of an expression, but that also seems inelegant.
> >What I feel must be possible is to set up some sort of a pattern or
> >transformation rule which will say in effect, "Place the output in
> >this form, i.e. a + ib, regardless of what a and b are". I ask this
> >question not only for the specific example given but also in a broader
> >sense because I will and have wanted to display expressions in a
> >certain format, but have always had to resort to the kinds of
> >contrivances already mentioned.
> > Before submitting my question I perused the sections on Patterns
> >and the section on Transformation Rules in Wolfram's 4th edition Mathematica
> >book. If I missed a glaring answer to my question, I apologize.
> >
> >Thanks again,
> >
> >JT
>
>
> Sorry about that,
>
> JT
>