On Fri, 23 Oct 2009, Stavros Macrakis wrote:
< How you want to handle this depends on what simplifications you expect Maxima to perform.? I would think that the ab=>exp(%i*a) approach would enable the largest
< range of Maxima simplifications because Maxima 'knows' a lot about exponentiation; but it knows relatively little about conjugate. On the other hand, converting
< your result back into the ab form might give a messy result.
<
< And Maxima 'knows' nothing when you introduce a tellsimp -- that is strictly a mechanical rewrite.
<
< For example, ab:exp(%i*a) ... trigsimp(cabs(ab)) => 1, but cabs(ab) with the conjugate tellsimps (and ab declared complex) does nothing useful.
<
< ??????????? -s
<
< On Fri, Oct 23, 2009 at 9:15 AM, Barton Willis <willisb at unk.edu> wrote:
< Your tellsimpafter almost works; does this code fix the problem?
<
< ?(%i1) matchdeclare(a, lambda([s], mapatom(s) and get(s, unit_modulus)))$
<
< ?(%i2) block([simp : false], tellsimpafter(conjugate(a),1/a))$
<
< ?(%i3) declare(z,complex)$
< ?(%i4) put(z,true,'unit_modulus)$
<
< ?(%i5) conjugate(%i * z- 1/z);
< ?(%o5) -z-%i/z
<
< ?(%i6) conjugate(z * conjugate(z));
Thanks, Barton, it was the bit about wrapping tellsimpafter in a
block that turned off the simplifier that had me stumped. This works
quite nicely for my calculations, producing the output exactly like I
want it.
I appreciate your point Stavros, but in my case this route required
several extra simplification steps to put the output in the desired
form. I think this is more a reflection of the problem than any general
rule.
Leo
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.