On 22 May 2006, at 11:30, Andrew Moylan wrote:
> Should Mathematica be able to simplify the following expression?
> (It is
> easily seen to be zero under the given condition, x > 0.)
>
> FullSimplify[
> Arg[1 + I * x] + Arg[1 - I * x],
> {x > 0}
> ]
>
> In particular, I would have expected the following to yield ArcTan[b /
> a], from which the above expression is easily reduced to zero:
>
> FullSimplify[
> Arg[a + I b],
> {a > 0, b > 0}
> ]
>
> Any ideas?
>
> Cheers,
>
> Andrew
>
> P.S. Apologies if I have sent this twice; my original message seems
> not
> to have worked.
>
You do not even need the condition x>0: it is enough that x is real.
ComplexExpand[Arg[1 + I * x] + Arg[1 - I * x],TargetFunctions->{Re,Im}]
0
Simplify and FullSimplify by default do not make use of ComplexExpand.
Of course, if you wish you can make Simplify use ComplexExpand:
Simplify[Arg[1 + I*x] + Arg[1 - I*x],
TransformationFunctions ->
{ComplexExpand[#1, TargetFunctions -> {Re, Im}] & ,
Automatic}]
0
Note that doing this automatically involves the assumption that x is
real, so it would not be a good idea to permanently append
ComplexExpand to the TransformationFunctions, except when the
assumptions imply that the variables involved are real. However, it
is not difficult to write a version of Simplify or FullSimplify which
will make use ComplexExpand in a way that is compatible with the
assumptions about the variables (real or complex). That it is not
done by default is probably due to the facts that, on the one hand,
ComplexExpand is a high complexity function, and on the other, it
usually leads to more rather than less complex expressions (after all
it "Expands").
Note also that:
ComplexExpand[Arg[a + I*b], TargetFunctions -> {Re, Im}]
ArcTan[a, b]
so the assumption about a and b being positive are again not needed.
Andrzej Kozlowski
Tokyo, Japan