Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Ljapunov Exponent bei unbekanntem Prozess

geschrieben von richy 
In diesem Forum können zur Zeit keine Beiträge verfasst werden. Bitte versuche es später noch einmal.
Ljapunov Exponent bei unbekanntem Prozess
11. January 2005 19:51
Koennte ein laengerer Thread geben, indem ich vielleicht auch wieder hal blos fuer mich selber schreibe.
UM WAS GEHT ES ?
Es waere doch lustig wenn es ein Hilfsmittel gaebe, mit dem es moeglich waere den Grad von Chaos / Ordnung in einem beliebigen Vorgang zu bestimmen. Fuer iterative Gleichungen ist der Ljapunov Exponent (LE) solch ein Hilfsmittel.
http://home.t-online.de/home/lonacollin/fab-inet/cKapitel/c07.htm
(hier interessiert zunaechst nur die Definition des LE)
Eine Beispiel Darstellung ueber einen Kontrollparameter a findet sich hier:
http://home.t-online.de/home/lonacollin/fab-inet/cKapitel/c08.htm

NACHTEIL:
Wir koennen mit dieser Definition des LE nur etwas anfangen, also Chaos/Ordnung in einem Vorgang bestimmen, wenn uns die Uebertragungsfunktion des Vorgangs bekannt ist.
Welche Uebertragungsfunktion ?
Der LE summiert ueber den ln(abs der Ableitung einer Funktion. Die Funktionm die uns angibt, welcher Output y(n+1)sich fuer einen Input y(n) ergibt. Es ist also die Kenntnis von df(y)/dy notwendig.
(BTW: Letztendlich wird der LE uns einen einfachen Zahlenwert liefern)

Beispiel:
In der logstischen Abbildung ist die Abbildungsvorschrift eines Schrittes:
y(k+1)=a*y(k)*(1-y(k))
Ich schreibe das mal etwas anders:
f(y)=a*y(k)*(1-y(k))
y(k+1)=f(y)
Denke so wird in dem iterativen Vorgang auch deutlicher, dass es sich um zwei Vorgaenge handelt.
Der Abbildung f(y) und dem Vorgang Output=Input.
Die Ableitung die im Beispiel fuer den LE zu verwenden ist, wird nun auch deutlicher:
df(y)/dy=a*(1-2*y)

Wir benoetigen also die mathematische (Differenzen) Gleichung, die einem Vorang zugrunde liegt, um so den LE bestimmen zu koennen.

FALL-BEISPIEL:
Wir bekommen zwei Tabellen mit einer Reihe von Zahlenwerten vorgelegt.
Mit der Aufgabe, dass wir entscheiden sollen, welcher dieser beiden Tabellen "ordentlicher" ist.
Wir versuchen diese Aufgabe mit dem LE zu loesen.

WIR MACHEN DAZU FOLGENDE ANNAHME:
(Alles folgende betrachtet Differenzengleichungen erster Ordnung)
" Ich nehme mal an diese Zahlenwerte sind durch einen dynamischen,
also iterativen Prozess (erster Ordnung) zustande gekommen"
Das wird an den Zahlenwerten unserer Tabelle nichts aendern, aber wir
machen damit folgende Annahme ueber die innere Struktur der Tabelle.

(Ich muss hier ein bischen Abschweifen, damit es nachher klarer wird, wie der LE rein numerisch bestimmt werden kann.)

Betrachten wir nochmals die logistische Abbildung: (DGL 1 ter Ordnung)
Die Zahlenwerte der Tabelle haben hier zweierlei Bedeutung !!!
(Das ist wirklich wichtg.)
Einmal kann man sie als Funktionswerte betrachten:
f(y)=a*y(k)*(1-y(k))
aber auch als Inputwerte y
y(k+1)=f(y)

Gehen wir die Tabelle mal von Anfang an durch:
Den ersten Zahlenwert z0 interpretieren wir als Anfangswert y0.
Unter Annahme eines iterativen Prozesses (1 ter Ornung) wurde fuer diesen der Funktionswert ermittelt, den wir bei z1 ablesen koennen.
Der zweite Zahlenwert der Tabelle z1 ist also f(y0).
Aber auch y1.
Irgendwie unpraktisch. Daher folgendes

GEDANKENEXPERIMENT:
Unsere Tabelle beinhaltet INPUT y und OUTPUT f(y) des angenommenen iterativen Vorgangs.
INPUT und OUTPUT getrennt vorliegen zu haben waere uebersichtlicher. Deshalb machen wir von unserer Tabelle zunaechst einfach mal eine Kopie.
Auf das Original schreiben wir INPUT y
Auf die Kopie schreiben wir OUTPUT f(y)
Der Output steht immer eine Stelle neben dem Input. Aha
Schneiden wir von der Kopie (Output) einfach den ersten Eintrag mal ab.
Jetzt halten wir beide Tabellen linksbuendig uebereinander.
Ahhhh: So sind wir das von einer Abbildung gewohnt.
Wertepaare [original | Kopie ] oder [Input | output ].

Das waren bisher nur Vorueberlegungen, die helfen sollen letztendlich einen Rechneralgo zu entwickeln, der aus einer Tabelle den LE berechnet.
Warum diese Vorueberlegungen hilfreich sind, wird vielleicht erst dann deutlich, wenn wir konkret versuchen den numerischen LE Algo zu entwerfen. Also im naechsten Beitrag.
Vielleicht hat aber jetzt schon jemand Verbesserungsvorschlaege ...



Beitrag bearbeitet (11.01.05 21:36)
Re: Ljapunov Exponent bei unbekanntem Prozess
12. January 2005 03:49
wow, mein Beitrag hier ist verloren gegangen.
wohl nicht richtig abgeschickt.
War der wichtig ?
Fuer das Verstaendnis vielleicht.
Aber wahrscheinlich liest hier soundso niemand mit.
Im naechsten Beitrag werde ich ganz einfach einen numerischen Algorithmus vorstellen, wie man numerisch den Le einer Wertetabelle
ermitellt.
der Beitrag war ziemlich lang. *aerger

Also wens interessiert, ich werde den LE Algo fuer unbekannte Prozesse
in 2 oder 3 Tagen auch auf meine HP stellen.

ciao
richy



Beitrag bearbeitet (12.01.05 13:01)
Satyr
Re: Ljapunov Exponent bei unbekanntem Prozess
12. January 2005 08:29
Hallo Richy!
Du liest meine Beiträge und ich die Deinigen!Wenn hier niemand antwortet bedeutet das nicht zwangsläufig, daß sie nicht gelesen werden!
Ich glaube, daß hier so Mancher einfach der Mathematik nicht folgen kann.Ich auch nicht.Aber dennoch versuche ich wenigstens den Kern der Sache zu begreifen.Das ist auch der Grund,warum in meinen Beiträgen nie Mathematik zu finden ist.
Wäre an einem Besuch deiner HP interessiert.Adresse?
Grüße aus Wien
Satyr

Re: Ljapunov Exponent bei unbekanntem Prozess
12. January 2005 14:02
Hi Satyr
Hab mich blos gefragt ob ich nochmal so viel schreibe.
1) y(n+1)=a*y(n)*(1-y(n))
ist die logistische Gleichung, die eigentlich jeder kennen sollte. Mehr was ja bisher nicht an Mathe. Ok die Gleichung ableiten :
2) d(y(n+1))/dy(n)=a*(1-2y(n))
auch keine hoehere Mathematik.
Bei jedem Iterationsschritt setze ich y(n) jetzt in Gleichung 2) ein. Bilde betrag und ln. Summiere alle Werte auf. Am Schluss noch durch die Anzahl N teilen, also wie oft ich summiert habe und fertig ist der Ljapunov Exponent.

Was mache ich aber wenn Gl 1) bzw Gl 2) nicht gegeben ist ? Nur die Werte der Iteration ? Dann muss ich numerisch differenzieren um den LE zu bestimmen. Kein Hexenwerk aber schon etwas kniffelig.

Ich schreibe mal wie ich das zunaechst falsch angegangen bin. Aus Fehlern lernt man ja oft am Meisten:

A)
f(n) liegt mir vor. Ich kann die Tabelle numerisch differenzieren z.B mit der einfachsten Naeherung df/dn = (f(n+1)-f(n))/delta n
Ich benoetige aber df/dy.
df/dy=df/dn*dn/dy
Jetzt muss ich also dn/dy bestimmen.
delta n ist konstant
Waere auch delta y konstant, dann waere es einfach: df/fy =c * df/dn.

delta y ist aber keineswegs konstant. Das sollte mein erster Beitrag auch zeigen. Nachdem mir das endlich auch klar war habe ich es also mit folgender Naeherung versucht:

B)
df=y(k+1)-y(k)
dy=y(k)-y(k-1) =>
df/dy (y(k+1)-y(k)) / (y(k)-y(k-1))

Mit der Original / Kopie Tabelle kann man sich veranschaulichen, das diese
Naeherungen in Ordnung gehen.
Allerdings ist das Ergebnis weniger berauschend.
Auch genauere Differenzen aendern daran nichts.
Warum ist das Ergebnis so schlecht ?
Zum einen kann dy gegen null gehen, oder unter die Rechnergenauigkeit.
Im periodischen Fall dagegen ist dy viel zu gross.
Was tun ?

C)
Wie kann man sich ein Differential noch vorstellen ?
Man wackelt etwas am y Wert (dy) und schaut wie dann der Funktionswert wackelt (df).
Dabei sollte dy ueber der Rechnergenauigkeit liegen aber so klein wie moeglich sein.
Genau so muss man vorgehen. Man darf sich von der Tabelle nicht die y Werte diktieren lassen, sondern muss selbst nach passenden Werten suchen !
So funktioniert es :-)
Man nimmt den ersten Tabellenwert und sagt ok das ist mein y(0).
Nun sucht man die ganze Tabelle nach einem passenden y(m) durch,
so dass |dy=|y(m)-y(0)| minimal wird aber groesser als ein epsilon, dass ueber die Rechnergenauigkeit vorgegeben ist. z.B. epsilon=10e(-9)
Klingt kompliziert, sind aber nur ein paar Programmzeilen.
Wie haben also eine Stelle gefunden, die fuer das dy Wackeln am geeignesten ist. Wo das zugehoerige Funkrionswertwackeln zu finden ist sollte klar sein. Einen Index nebendran. Im Beispiel:
|df/dx|= |y(m+1)-y(1)| / |y(m)-y(0)|

Tja und das erstaunliche. Es funktioniert prima :-)
Stelle Bilder und Programmcode noch auf meine HP:
http://home.arcor.de/richardon/

So jetzt koennen wir das chaos messen :-)
ciao
richy