DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Auf ein neues: Cos[x]^2 statt Cos[2x]


>-----Original Message-----
>From: Roman Maeder [mailto:maeder@XXXXXXX.ch]
>Sent: Thursday, October 16, 2003 7:29 PM
>To: Jens Bredenbeck
>Cc: demug@XXXXXXX.ch
>Subject: Re: Auf ein neues: Cos[x]^2 statt Cos[2x] 
>
>
>> Das war falsch formuliert, sorry...
>> 
>> Ich möchte in Outputs wie z.B.
>> 
>> 2+Cos[2 x]+Cos[2 y]+Cos[2 (x+y)]
>> 
>> Cos[2x] durch 2Cos[x]^2-1 ersetzt haben, also kein 
>TrigExpand, wo dann 
>> der Sin[x] auftaucht
>
>Vielleicht verstehe ich es immer noch nicht richtig, aber wenn Sie nur
>Cos[2x] durch 2Cos[x]^2-1 ersetzen wollen, dann tun Sie es 
>doch einfach:
>
>       irgendwas /. Cos[2x_] :> 2Cos[x]^2-1
>
>
>In[1]:= 2+Cos[2 x]+Cos[2 y]+Cos[2 (x+y)]
>
>Out[1]= 2 + Cos[2 x] + Cos[2 y] + Cos[2 (x + y)]
>
>In[2]:= % /. Cos[2x_] :> 2Cos[x]^2-1
>
>                     2           2               2
>Out[2]= -1 + 2 Cos[x]  + 2 Cos[y]  + 2 Cos[x + y]
>
>
>das ist natürlich nicht sehr allgemein (und geht z. Bsp. für 
>Cos[4x] nicht).
>Allgemeinere Ersetzungsregeln behandle ich in Kapitel 6 meines
>"Programming in Mathematica", dort ist auch ein Beispiel über 
>trigonometrische
>Vereinfachungen.
>
>Roman Mäder
>
>


(Ja, diese Literaturstelle kann ich auch empfehlen ;-)

Vielleicht hilft einfach diese Regel:

  srule = Sin[v_]^ (n_ /; n >= 2) :> (1 - Cos[v]^2)Sin[v]^( n - 2)

und damit

In[61]:= (Sin[3 x]// TrigExpand) //. srule // Factor
Out[61]= (-1 + 2 Cos[x]) (1 + 2 Cos[x]) Sin[x]

In[63]:= (2 + Cos[2*x] + Cos[2*y] + 
     Cos[2*(x + y)]// TrigExpand) //. srule //Factor
Out[63]= 1 + 4*Cos[x]^2*Cos[y]^2 - 4*Cos[x]*Cos[y]*Sin[x]*Sin[y]

In[64]:= (Cos[4*x]//TrigExpand) //. srule //Factor
Out[64]= 1 - 8*Cos[x]^2 + 8*Cos[x]^4

In[66]:= (Sin[4*x]// TrigExpand) //. srule //Factor
Out[66]= 4*Cos[x]*(-1 + 2*Cos[x]^2)*Sin[x]

Es kommt Sin dann nur mit maximaler Potenz 1 vor. (Wenn auch negative
Potenzen möglich sind, muß man die Regel für Csc erweitern.)


An Out[63] mag häßlich sein, daß x+y aufgelöst ist und deshalb gemischte
Terme (mit Sin) auftreten. Man kann dies vermeinden, wenn man diese für
TrigExpand verfremdet. 

In[113]:= expr
Out[113]= 2 + Cos[2 x] + Cos[2 y] + Cos[2 (x + y)]

(nur eine Abkürzung)

In[114]:= pp = Position[expr, (Sin | Cos)[_. Plus[_, __]]];

In[115]:=
(MapAt[Hold, expr, Join[#, {1, 2}] & /@ pp] // TrigExpand) //. 
    srule // ReleaseHold
Out[115]=
-1 + 2*Cos[x]^2 + 2*Cos[y]^2 + 2*Cos[x + y]^2

(Wenn's das gesucht war ??)

--
Hartmut Wolf


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html