Einzelnen Beitrag anzeigen
  #10  
Alt 11.12.11, 19:19
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Hi Merman

Zitat:
Zitat von Lutzl, zu meiner Herleitung (Wiki-Mathematiker):
„Je genauer dieses Vorgehen wird, desto mehr Rechenschritte und desto mehr Rundungsfehler akkumulieren sich. Deshalb ist Halbieren und Quadrieren besser, aber ebenfalls zu langsam.“
Seltsamer Mathematiker. Pauschal gesehen stimmt diese Aussage ueberhaupt nicht.

Wie waere es, wenn wir einfach mal die Iteration herleiten, die sich aus dem Additionstheorem ergibt und dann vergleichen ?

Deine Approximation lautet :

m0:=evalf(Pi/180);
c1:=1-m0^2/2;
c2:=sqrt(m0^2-m0^4/4);
x[1]:=c1;

for n from 1 to 360 do
x[n+1]:=x[n]*c1 - sqrt(1-x[n]^2)*c2;
y[n+1]:=sqrt(1-x[n+1]^2); # -> Sinuswerte
od;

Das Additionstheorem
****************




Du berechnest den Kosinus und dies entspricht der ersten Gleichung :
1) cos(x+y)=cos(x)*cos(y)-sin(y)*sin(x)
(Mittels der zweiten Gleichung haettest du dir die Umrechnung nach Sinus sparen koennen)

Setzten wir einfach mal in der Gleichung fuer x ein festes x0 und fuer y eine Abweichung dx davon :

cos(x0+dx)=cos(x0)*cos(dx)-sin(dx)*sin(x0)
Diese Gleichung ist exakt, aber nuetzt uns zunaechst wenig, da wir uns auf diese Weise nicht der trigonometrischen Funktionen entledigen. Zunaechst bringen wir sin(x0) auf eine Form cos(x0). Es gilt :
sin(x0)^2+cos(x0)^2=1 => sin(x0)=Wurzel(1-cos(x0)^2)
=>
A)
cos(x0+dx)=cos(dx)*cos(x0)-sin(dx)*Wurzel(1-cos(x0)^2)
************************************************** ******
(Diskussion der Gleichung im naechsten Beitrag)

Wie wuerde man ueber eine differentielle Methode vorgehen ?

Einschub (kannst du ueberspringen)
Die Ausgangsgleichung waere :
dcos(x)/dx=-sin(x)=-Wurzel(1-cos(x)^2)
Das Differential ersetzt man durch eine Differenz. Deine Loesung ist formal 1.Ordnung, somit waere es einfach der Differenzenquotient :
[cos(x+k*dx)-cos(x)]/dx=-Wurzel(1-cos(x)^2)
Und folgender Schritt entspraeche einer numerischen Integration 1.Ordnung:
cos(x+k*dx)=cos(x)-Wurzel(1-cos(x)^2)*dx
/Einschub

Die Differenzengleichung wuerde lauten :

B) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2)
C1=1
C2=dy=2*Pi/N_abtast=m0 im Beispiel Pi/180

Die Gleichung B) lautet diskretisiert :
A) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2)
C1=cos(dx)
C2=sin(dx)
(Btw : Die Form hatte ich vor 20 Jahren zweidmensional implementiert nicht Euler Cromer)

Und deine Iteration lautet :
c) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2);
C1=1-m0^2/2;
C2=Wurzel(m0^2-m0^4/4);

(Ich habe hier y(k) gewaehlt um die Variable vom x der Ausgangsgkeichung zu unterscheiden)

Letzendlich sind alle Gleichungen formal erster Ordnung (nicht bezueglich der Fehlerordnung) und unterscheiden sich durch die "Integrationsmethode".

Die Additionstheorem Methode ist sogar exakt !

Ich meine dein Verfahren wird sich letztendlich als ein Praediktor Korrektor Verfahren erweisen. Von Heun zum Beispiel :
http://www.tm-aktuell.de/PDF/AWPTeil1.pdf

EDIT :
Deine Methode fuehrt eine Taylorapproximation der exakten Konstanten der Additionstheoreme durch. (siehe naechster Beitrag)
Heun koennte dennoch aehnliche Ergebnisse liefern.

Ge?ndert von richy (27.02.12 um 18:03 Uhr)
Mit Zitat antworten