Zu meiner Iteration :
Zitat:
Insofern erhälst du eine ungefähre Sinuskurve, sie müsste allerdings ungenau sein, da deine Konstante c=0.01 sehr belibieg scheint,
|
Sie ist zunaecht ungenau, weil ich erster Ordnung (Euler) integriere.
Und ich hab schon die Loesung waerum die zweite Methode stabil und relativ genau ist
. In der Grafik ist die Iteration (rot) und die exakte Loesung (gruen) dargestellt :
Bis auf die roten Puenktchen fast deckungsgleich.
Hier einige Werte fuer 200 Abtastwerte pro 2*Pi:
Iteration := -.09699045186
Exakt := -.09410831333
Iteration := -.06569064212
Exakt := -.06279051954
Iteration := -.03432606403
Exakt := -.03141075908
Iteration := -.00292764181
Exakt := 0
Man kann das durch die Anzahl Abtastwerte, dt genauer haben :
dt=2*Pi/2000
Exakt := -.009424638434
Iteration := -.009462599264
Exakt := -.006283143966
Iteration := -.006322693191
Exakt := -.003141587486
Iteration := -.003182724778
An deine Genauigkeit reicht es nicht ran, dafuer ist die Iteration fast unverschaemt einfach und dennoch stabil:
> y:=0; x:=1; c:=3.14*0.01; N:=200;
>
> for i from 1 to N do
> x:=x-c*y; # Erzeugt den Cosinus
> y:=y+c*x; # Erzeugt den Sinus
> od:
c ist bei mir nicht beliebig sondern das ist dt*omega. Nach 100 Schritten bin ich im obigen Beispiel bei Pi und nach 200 Schriten bei 2*Pi
Zitat:
"sicherst" du x über st=x, allerdings steht diese Zuweisung innerhalb der Programmschleife, insofern wäre stets st = x(n-1)
|
So soll es gemaess Euler auch sein. Aber wie ich vermutete ist Euler fuer manche Faelle (Systeme) instabil.
Zitat:
Zitat von Wiki
The Euler method can also be numerically unstable, especially for stiff equations. This limitation—along with its slow convergence of error with h—means that the Euler method is not often used, except as a simple example of numerical integration. The instability can be avoided by using the Euler–Cromer algorithm.
|
http://en.wikipedia.org/wiki/Euler%27s_method
Schauen wir mal unter Euler-Cromer :
http://en.wikipedia.org/wiki/Euler%E...omer_algorithm
Siehst du das Detail ?
Zitat:
The difference with the standard Euler method is that the semi-implicit Euler method uses v(n+1) in the equation for x(n+1), while the Euler method uses v(n).
|
Die stabile Integration (ohne st) ist somit eine Euler Cromer-Integration und man kann diese weiter ohne numerischen Aufwand verbessern. Fuer musikalische Anwendungen (immer zeitkritisch) waere das vollkommen ausreichend. Fuer eine naturwissenschaftliche natuerlich nicht. Da verwendet man Runge Kutta oder Adam Bashford 4 ter Ordnung.
Anm:
Ah, du hast deine Iteration irgendwie fundamental geometrisch hergeleitet, nicht algebraisch. Das scheint mir auesserst interessant, weil sie so genau ist.
Viele Gruesse