Subject: A Question about a trigonometric identity
From: Martin Mallinson
Date: Wed, 18 Nov 2009 09:58:53 -0800
Thanks Barton (and everyone who commented) - much appreciated! Martin M
Barton Willis wrote:
> Maybe something like trig_sin_cos_contract will work for you:
>
> (%i54) e : (3^(3/2)*sin(z)-3*cos(z))/4;
> (%o54) (3^(3/2)*sin(z)-3*cos(z))/4
>
> (%i55) trig_sin_cos_contract(e);
> (%o55) (3*sin(z-%pi/6))/2
>
> Let's check:
>
> (%i56) trigrat(trigexpand(%-e));
> (%o56) 0
>
> Another test:
>
> (%i63) e : sin(x) - (7* cos(35*z^2 - 1) - sin(35*z^2-1));
> (%o63) sin(35*z^2-1)-7*cos(35*z^2-1)+sin(x)
>
> (%i64) trig_sin_cos_contract(e);
> (%o64) 5*sqrt(2)*sin(35*z^2-atan(7)-1)+sin(x)
>
> (%i65) trigrat(trigexpand(% - e));
> (%o65) 0
>
> Untested code--use with caution:
>
> load("opsubst");
>
> trig_sin_cos_contract(e) := block([trig_args,a,b,r,phi],
> trig_args : union(setify(gatherargs(e,'cos)), setify(gatherargs
> (e,'sin))),
> for z in trig_args do (
> z : first(z),
> a : ratcoeff(e, sin(z)),
> b : ratcoeff(e, cos(z)),
> if a # 0 and b # 0 then (
> r : sqrt(a^2 + b^2),
> phi : atan2(b,a),
> e : ratsubst(r * sin(z + phi), a * sin(z) + b * cos(z),e))),
> e);
>
>
> Barton
>
> -----maxima-bounces at math.utexas.edu wrote: -----
>
>
>
>> My problem of course, is that I had to guess that the expression was a
>> simple
>>
> phase shift, had I not guessed this, I would never have got there...
>
>
>