IFS - Iterierte Funktionensysteme

Iterierte Funktionssysteme sind in der Lage, mit wenigen Regeln komplexe, natürlich aussehende Geometrien zu erzeugen.

 

Typen von Transformationen

Ein Punkt \(P(x|y) \) der Ebene wird durch eine Gleichung auf einen anderen Punkt \(P'(x|y) \) abgebildet (transformiert).
Wenn der Punkt lediglich verschoben wird, dann spricht man von einer Translation. Aber es gibt noch andere wichtige Transformationen.  Besonders häufig auftretende Transformationen sind:
  • Translation (Verschiebung)
  • Rotation (Drehung)
  • Scherung
  • Spiegelung
Am elegantesten lassen sich solche Transformation in Matrixschreibweise darstellen bzw. berechnen. Multipliziert man diese Matrizen aus, gelangt man zu den weiter unten stehenden Gleichungen. Dieser Abschnitt geht nicht weiter auf die Matrizenrechnung ein, da sie für unser Vorhaben nicht notwendig ist. Es sei noch angemerkt, dass diese Art der Darstellungen aber z.B. in der Computergrafik wichtig ist.
In der Ebene lassen sich alle genannten Transformationen durch die folgenden beiden Gleichungen vollständig beschreiben:

\[ \begin{align} x_{n+1} & = a x_n + b y_n + e \\ y_{n+1} & =  c x_n + d y_n + f \\ \end{align} \]

 
 

Die Koeffizienten \(a,b,c,d,e,f\)  sind (reelle) Zahlen. Der Punkt vor der Transformation \( P(x_n | y_n ) \) wird dabei auf dem Punkt \( P(x_{x+1} | y_{n+1}) \) abgebildet.

 

Iterierte Funktionensysteme - das Prinzip

Das Prinzip der iterierten Funktionensysteme ist in der obenstehenden Abbildung erläutert. Im Allgemeinen ist ein Satz von   Transformationen (f1(x,y), f2(x,y), ..., fn (x,y)) gegeben. Ausgehend von einem Punkt P(x | y) in der Ebene, wählt man durch Zufall eine der Transformationen aus und erhält somit wieder einen Punkt in der Ebene.
Diesen so erhaltenen neuen Punkt "steckt" man erneut in die Transformation hinein. Alle Punkte die man auf diese Weise erhält, werden gezeichnet. Die so entstehenden Grafiken besitzten eine außerordentliche Komplexität und Schönheit. Mithilfe des IFS-Codes, der alle Informationen enthält, lassen sich diese Grafiken erzeugen.
 

IFS-Code

Ein IFS-Code ist eine Tabelle, in der die Koeffizienten (a,b,c,d,e,f)  für jede Funktion stehen. Dadurch ist die Transformation vollständig beschrieben. Außerdem stehen noch die Wahrscheinlichkeiten, mit der jeder dieser Funktionen aufgerufen wird, dabei.

Funktion a           
b           c          
d          e      f           Wahrscheinlichkeit
f1(x,y) 
0
0 0 0.16 0 0 0.01
f2(x,y)
0.85 0.04 -0.04 0.85 0 1.6 0.85
f3(x,y)
0.2
-0.26 0.23
0.11
0
1.6
0.07
f4(x,y) 
-0.15
0.28 0.26
0.24
0
0.44
0.07
IFS-Code: 1              
 

 

Beispiel


 In der Praxis benötigt man viele 10.000 Punkte. Wir hören hier nach drei Iterationen auf.
Das Beispiel bezieht sich auf die Tabelle: IFS-Code 1.

  1. Anfangspunkt: P0(1 | 1) (zufällig gewählt)
  2. gewählte Funktion f2  (ist mit 85% auch die am häufigsten benutzte)
  3.   mit  f2 (1,1)   ergibt sich dann für P ( 0.89 | 2.41   )
  4. gewählte Funktion  wieder f2   
  5. mit f2( 0.89,  2.41  ) ergibt sich dann für P2 ( -0.85 | 3.61  )
  6. gewählte Funktion f3
  7. mit f3 ( -0.85  , 3.61  ) erhält man nun P3 ( -0.77 |  2.19   )
  8. ....
Die Punkte P1, P2, P3  werden gezeichnet.
 

Weitere IFS-Codes

 
Funktion a        
b c         
d e f Wahrscheinlichkeit
f1(x,y)
0.14  0.01  0 0.51    -0.08    -1.31    0.1
f2(x,y)
0.43  0.52 -0.45 0.5  1.49 -0.75 0.35
f3(x,y)
0.45 -0.49      0.47 0.47 -1.62 -0.74 0.35
f4(x,y)
0.49  0  0 0.51  0.02  1.62 0.2
IFS-Code: 2              




Funktion a         
b c          
d e f Wahrscheinlichkeit
f1(x,y)
-0.04  0 -0.23 -0.65    -0.08    0.26    0.15
f2(x,y)
 0.61  0  0  0.31  0.07 3.5 0.22
f3(x,y)
 0.65  0.18    -0.3  0.48  0.74 0.39 0.15
f4(x,y)
 0.64 -0.2  0.32  0.56 -0.66 0.9 0.48
IFS-Code: 3              
               




Funktion a          
b c           
d e f Wahrscheinlichkeit
f1(x,y)
0.05  0  0  0.6 0   
0 0.028
f2(x,y)
0.05  0  0 -0.5 0 1 0.023256
f3(x,y)
0.459627  
-0.321394  
 0.385673   
 0.383022   
0 0.6   0.279070
f4(x,y)
0.469846 -0.153909  0.171010  0.422862 0 1.1 0.209302
f5(x,y) 0.433013  0.275000 -0.250000  0.476314 0 1.0 0.255814
f6(x,y) 0.421325  0.257115 -0.353533  0.306418 0 0.7 0.204651
IFS-Code: 4              



Funktion a           
b c           
d e f Wahrscheinlichkeit
f1(x,y)
0.05  0  0  0.6 0     0 1/6
f2(x,y)
0.05  0  0 -0.5 0 1 1/6
f3(x,y)
0.459677    -0.321343     0.385612      0.383065    0 0.6    1/6
f4(x,y)
0.469858 -0.153966  0.170979  0.422841 0 1.1 1/6
f5(x,y) 0.432912  0.275191 -0.250174  0.476204 0 0.1 1/6
f6(x,y) 0.421371  0.257075 -0.353478  0.306452 0 0.7 1/6
IFS-Code: 5              




Funktion a           
b c           
d e f Wahrscheinlichkeit
f1(x,y)
 0.05       0  0  0.4 -0.06 -0.47 0.026000
f2(x,y)
-0.05  0  0 -0.4 -0.06 -0.47 0.026399
f3(x,y)
 0.03 -0.14  0  0.26 -0.16   
-0.01 0.010296
f4(x,y)
-0.03  0.14  0 -0.26 -0.16 -0.01   
0.010296
f5(x,y)  0.56  0.44   
-0.37  0.51    
 0.3  0.15 0.591869
f6(x,y)  0.19  0.07 -0.01  0.15 -0.2  0.28 0.038543
f7(x,y) -0.33 -0.34 -0.33  0.34 -0.54  0.39 0.296597
IFS-Code: 6  

Joomla!-Debug-Konsole

Sitzung

Profil zum Laufzeitverhalten

Speichernutzung

Datenbankabfragen