DMUG-Archiv 2003

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

RE: Hilfe bei unhandlichem Ausdruck gesucht

ist es das was du willst ?

grüsse robert

In[233]:=
y = a1 + a2*Sin[b + x] + a3*Sin[c - x] + 
    a4*Cos[d + x] + a5*Cos[e - x] + a6*Sin[f + 2*x] + 
    a7*Sin[g - 2*x] + a8*Cos[h + 2*x] + 
    a9*Cos[i - 2*x]; 

In[234]:=
rs = Last[Simplify[PowerExpand[Simplify[
      Solve[{a*Sin[n*x + b] == si*Sin[n*x] + 
          co*Cos[n*x], si^2 + co^2 == a^2}, 
       {si, co}]]]]]

Out[234]=
{si -> a*Cos[b], co -> a*Sin[b]}

In[235]:=
rc = First[Simplify[PowerExpand[
     Simplify[Solve[{a*Cos[n*x + b] == si*Sin[n*x] + 
          co*Cos[n*x], si^2 + co^2 == a^2}, 
       {si, co}]]]]]

Out[235]=
{si -> (-a)*Sin[b], co -> a*Cos[b]}

In[236]:=
yf = y /. {a_*Sin[b_ + (n_.)*x_] -> si*Sin[n*x] + 
       co*Cos[n*x] /. rs, a_*Cos[b_ + (n_.)*x_] -> 
      si*Sin[n*x] + co*Cos[n*x] /. rc}

Out[236]=
a1 + a4*Cos[d]*Cos[x] + a5*Cos[e]*Cos[x] + 
  a8*Cos[h]*Cos[2*x] + a9*Cos[i]*Cos[2*x] + 
  a2*Cos[x]*Sin[b] + a3*Cos[x]*Sin[c] + 
  a6*Cos[2*x]*Sin[f] + a7*Cos[2*x]*Sin[g] + 
  a2*Cos[b]*Sin[x] - a3*Cos[c]*Sin[x] - 
  a4*Sin[d]*Sin[x] + a5*Sin[e]*Sin[x] + 
  a6*Cos[f]*Sin[2*x] - a7*Cos[g]*Sin[2*x] - 
  a8*Sin[h]*Sin[2*x] + a9*Sin[i]*Sin[2*x]

In[237]:=
s1 = (Plus @@ #1 & )[Cases[yf, (a_.)*Sin[x] -> a]]
s2 = (Plus @@ #1 & )[Cases[yf, (a_.)*Sin[2*x] -> a]]
c1 = (Plus @@ #1 & )[Cases[yf, (a_.)*Cos[x] -> a]]
c2 = (Plus @@ #1 & )[Cases[yf, (a_.)*Cos[2*x] -> a]]

Out[237]=
a2*Cos[b] - a3*Cos[c] - a4*Sin[d] + a5*Sin[e]

Out[238]=
a6*Cos[f] - a7*Cos[g] - a8*Sin[h] + a9*Sin[i]

Out[239]=
a4*Cos[d] + a5*Cos[e] + a2*Sin[b] + a3*Sin[c]

Out[240]=
a8*Cos[h] + a9*Cos[i] + a6*Sin[f] + a7*Sin[g]

In[241]:=
const = Simplify[y - (s1*Sin[x] + s2*Sin[2*x] + 
     c1*Cos[x] + c2*Cos[2*x])]

Out[241]=
a1

In[242]:=
r = const + s1*Sin[x] + c1*Cos[x] + c2*Cos[2*x] + 
   s2*Sin[2*x]

Out[242]=
a1 + Cos[x]*(a4*Cos[d] + a5*Cos[e] + a2*Sin[b] + 
    a3*Sin[c]) + Cos[2*x]*(a8*Cos[h] + a9*Cos[i] + 
    a6*Sin[f] + a7*Sin[g]) + 
  (a2*Cos[b] - a3*Cos[c] - a4*Sin[d] + a5*Sin[e])*
   Sin[x] + (a6*Cos[f] - a7*Cos[g] - a8*Sin[h] + 
    a9*Sin[i])*Sin[2*x]

(* kontrolle ist gut *)
In[243]:=
Simplify[r - y]

Out[243]=
0

In[244]:=
res = r /. (si1_.)*Sin[x] + (co1_.)*Cos[x] -> 
     Sqrt[si1^2 + co1^2]*Sin[x + ArcTan[si1, co1]] /. 
   (si2_.)*Sin[2*x] + (co2_.)*Cos[2*x] -> 
    Sqrt[si2^2 + co2^2]*Sin[2*x + ArcTan[si2, co2]]

Out[244]=
a1 + Sqrt[(a4*Cos[d] + a5*Cos[e] + a2*Sin[b] + 
       a3*Sin[c])^2 + (a2*Cos[b] - a3*Cos[c] - 
       a4*Sin[d] + a5*Sin[e])^2]*
   Sin[x + ArcTan[a2*Cos[b] - a3*Cos[c] - a4*Sin[d] + 
       a5*Sin[e], a4*Cos[d] + a5*Cos[e] + a2*Sin[b] + 
       a3*Sin[c]]] + 
  Sqrt[(a8*Cos[h] + a9*Cos[i] + a6*Sin[f] + a7*Sin[g])^
      2 + (a6*Cos[f] - a7*Cos[g] - a8*Sin[h] + 
       a9*Sin[i])^2]*
   Sin[2*x + ArcTan[a6*Cos[f] - a7*Cos[g] - 
       a8*Sin[h] + a9*Sin[i], a8*Cos[h] + a9*Cos[i] + 
       a6*Sin[f] + a7*Sin[g]]]

(* kontrolle ist gut *)
In[245]:=
FullSimplify[res - y]

Out[245]=
0

-----Original Message-----
From: dieter.palme@XXXXXXX.com [mailto:dieter.palme@XXXXXXX.com] 
Sent: Friday, May 23, 2003 1:31 PM
To: dmug@XXXXXXX.ch
Subject: Hilfe bei unhandlichem Ausdruck gesucht


Freudliche Grüße an die Gruppe und eine Frage, die meiner Ungeduld, das ganze Handbuch zu durchsuchen, entspringt.

Als Ergebniss einer Rechnung erhalte ich einen Ausdruck in der Art:

y = a1 + a2 Sin[b + x] + a3 Sin[c - x] + a4 Cos[d + x] + a5 Cos[e - x] + a6 Sin[f + 2 x] + a7 Sin[g - 2 x] + a8 Cos[h + 
2 x] + a9 Cos[i - 2 x] 

Ich möchte aber in eine Form kommen, die vielleicht so aussieht:

y = a1 + Sin[x - k] + Sin[2 x - l]

Ich habe zwar schon den Befehl "Position[Ausdr, Variabl]" gefunden, damit könnte man die Stellen finden, in denen x 
bzw. 2 x  vorkommt und dann die Phase k bzw. l ausrechnen. Der Befehl unterscheidet aber zwischen +x und -x. Da fällt 
mir dann nur noch eine Schleife ein, die über die Länge des Ergebnisses von Position[] zählt, dann nach Sin und Cos 
unterscheidet und dann die richtigen Quotienten ausrechnet und ich habe aber bei Jens Kuska gelernt, daß Schleifen 
"igittigit" sind. Also sollte es eine elegantere Lösung geben. Erschwerend kommt hinzu, daß alles aus x auch Null sein 
kann. Sonst wäre es ja zu einfach, es stände ja alles immer an seiner vorbestimmten Stelle.

MfG

Dipl. Phys. Dieter Palme

Fiberoptic

Tektronix Munich GmbH

Gauss Strasse 11
D-85757 Karlsfeld
Germany

mailto:dieter.palme@XXXXXXX.com

Off: +49 (0)8131 5956-0
Tel: +49 (0)8131 595635
Fax: +49 (0)8131 595699
Mob: +49 (0)177 8066318

http://www.tektronix.com

Tektronix 
Enabling Innovation 


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

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