Re: Bug in Mathematica 7.0.1.0 ?
- To: mathgroup at smc.vnet.net
- Subject: [mg109319] Re: Bug in Mathematica 7.0.1.0 ?
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Wed, 21 Apr 2010 07:47:53 -0400 (EDT)
- References: <hqmd2g$pro$1@smc.vnet.net>
slawek wrote:
> In[1] := Im[a] ^= 0; Conjugate[a b]
>
> Out[1] := Conjugate[a b]
>
> It is not funny, Mathematica 6 properly evaluates the result
>
> a Conjugate[b]
>
> What happens?
>
> slawek
>
>
There are several points here:
1) The answer from 7.0.1 is not wrong - just not in the form you desired.
2) Your code assumed that Conjugate called Im internally - this is the
sort of assumption that may vary from one version to the next.
3) Using the code:
FullSimplify[Conjugate[a b], Im[a] == 0]
solves the problem, but in a possibly unreliable way because (a
Conjugate[b]) is actually no simpler than Conjugate[a b]
Ideally, you need to find a way to tell Mathematica that a is Real, and
what kind of expression you prefer, for example:
In[8]:= complexity[expr_] := LeafCount[expr] +
10*Count[expr, Conjugate[x_ y_], {0, Infinity}];
FullSimplify[Conjugate[a b], Im[a] == 0,
ComplexityFunction -> complexity]
Out[9]= a Conjugate[b]
Note that although that looks like a lot of work, you can wrap the
process up in a function that you define at startup, or in a package,
and then use as required.
David Bailey
http://www.dbaileyconsultancy.co.uk