Einzelnen Beitrag anzeigen
  #1  
Alt 28.03.10, 22:15
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard Math - kleine numerische Tricks

In diesem Thread mochte ich ein paar einfache numerische Methoden zusammenstellen:


1) Iteratives Erzeugen eines Kreises :
****************************
METHODE A)

Ausgangspunkt sei die Iteration (DZGL) :
z[k+1]:=c*z[k]
Die Loesung lautet
z[k]=z0*c^k= z0*exp( ln(c)*k )
************************

Man sieht an dieser Darstellung nun folgendes :
Ist ln(c) rein imaginaer, so stellt die Loesung einen Kreis in der komplexen Ebene dar :
z[k]=z0*exp( I*s*k )=cos(( I*s*k )+I*sin( I*s*k )

Eine geschlossene Abtastung erhaelt man fuer s=2*Pi/N
Der Hauptwert von ln(c) lautet ln|c|+I(arg(c))
Fuer ln|c|=0 , also |c|=1 wird der Ausdruck rein imaginaer.

Geeinete Faktoren waeren somit
c=c_re+I*c_im=cos(2*Pi/N)+I*sin(2*Pi/N)

Eingesetzt :
z[k+1]:=cos(2*Pi/N)+I*sin(2*Pi/N)*z[k]
******************************

getrennt fuer Real und Imaginaerteil :
z_re[k+1]+I*z_im[k+1]:=(c_re+I*c_im)*(z_re[k]+I*z_im[k])=
c_re*z_re[k]+I*c_re*z_im[k]+I*c_im*z_re[k]-c_im*z_im[k]

Man erhaelt das gekoppelte DZGL Gleichungssystem :
****************************
z_re[k+1]=c_re*z_re[k]-c_im*z_im[k]
z_im[k+1]=c_im*z_re[k]+c_re*z_im[k]
****************************

In Vektorschreibweise
z[k+1]=A*z[k] mit der Matrix A=

*********
c_re , -c_im
c_im , c_re
*********

Zitat:
> restart; with(plots):
> N:=100;
> c_re:=cos(2*Pi/N);
> c_im:=sin(2*Pi/N);
> z_re[1]:=1;
> z_im[1]:=0;
> for k from 1 to N do
> z_re[k+1]:=evalf(c_re*z_re[k]-c_im*z_im[k]);
> z_im[k+1]:=evalf(c_im*z_re[k]+c_re*z_im[k]);
> od:
> druck:=seq([z_re[i],z_im[i]],i=1..N):
> plot ([druck],style=point);
Mit Zitat antworten