Lie-Ableitung eines Skalarfeldes
(%i1) LieScalar ( [ l ] ) : = block ( [ f , h , x , k , Lfh ] ,
   if ( length ( l ) < 3 ) or ( length ( l ) > 4 ) then
      error ( "Aufruf mit 3 oder 4 Argumenten." ) ,
   f : l [ 1 ] ,
   h : l [ 2 ] ,
   x : l [ 3 ] ,
   if length ( l ) = 3 then k : 1 else k : l [ 4 ] ,
   if not ( nonnegintegerp ( k ) ) then
      error ( "Ordnung k muss natürliche Zahl sein." ) ,
   if k = 0 then return ( h )
   else
       Lfh : jacobian ( [ h ] , x ) . f ,
       return ( LieScalar ( f , Lfh , x , k 1 ) )
) $
Beobachtbarkeitsabbildung
(%i2) ObservabilityMap ( f , h , x ) : = block ( [ i , n ] ,
   n : length ( x ) ,
   makelist ( LieScalar ( f , h , x , i ) , i , 0 , n 1 )
   ) $
Beobachtbarkeitsmatrix
(%i3) ObservabilityMatrix ( f , h , x ) : = jacobian ( ObservabilityMap ( f , h , x ) , x ) $
Lie-Klammer
(%i4) LieBracket ( [ l ] ) : = block ( [ f , g , x , k , Df , Dg , ad ] ,
   if ( length ( l ) < 3 ) or ( length ( l ) > 4 ) then
      error ( "Aufruf mit 3 oder 4 Argumenten." ) ,
   f : l [ 1 ] ,
   g : l [ 2 ] ,
   x : l [ 3 ] ,
   if length ( l ) = 3 then k : 1 else k : l [ 4 ] ,
   if not ( nonnegintegerp ( k ) ) then
      error ( "Ordnung k muss natürliche Zahl sein." ) ,
   if k = 0 then return ( g )
   else
       Df : jacobian ( f , x ) ,
       Dg : jacobian ( g , x ) ,
       ad : list_matrix_entries ( Dg . f Df . g ) ,
       return ( LieBracket ( f , ad , x , k 1 ) )
) $
Steuerbarkeitsmatrix
(%i5) ControllabilityMatrix ( f , g , x ) : = block ( [ i , n , L ] ,
   n : length ( x ) ,
   if length ( f ) # n then
       error ( "Dimensionen von f und x müssen übereinstimmen." ) ,
   if length ( g ) # n then
       error ( "Dimensionen von g und x müssen übereinstimmen." ) ,
   L : makelist ( LieBracket ( f , g , x , i ) , i , 0 , n 1 ) ,
   transpose ( apply ( matrix , L ) )
   ) $
Beispiel: Rössler-System
(%i9) f : [ x2 x3 , x1 + a · x2 , c + x3 · ( x1 b ) ] ;
h : log ( x3 ) ;
x : [ x1 , x2 , x3 ] $
n : length ( x ) $

\[\operatorname{(f) }\left[ -\ensuremath{\mathrm{x3}}-\ensuremath{\mathrm{x2}}\operatorname{,}a\, \ensuremath{\mathrm{x2}}+\ensuremath{\mathrm{x1}}\operatorname{,}\left( \ensuremath{\mathrm{x1}}-b\right) \, \ensuremath{\mathrm{x3}}+c\right] \]

\[\operatorname{(h) }\log{\left( \ensuremath{\mathrm{x3}}\right) }\]

Beobachtbarkeitsmatrix
(%i17) Q : ratsimp ( ObservabilityMatrix ( f , h , x ) ) ;

\[\operatorname{(Q) }\begin{pmatrix}0 & 0 & \frac{1}{\ensuremath{\mathrm{x3}}}\\ 1 & 0 & -\frac{c}{{{\ensuremath{\mathrm{x3}}}^{2}}}\\ -\frac{c}{\ensuremath{\mathrm{x3}}} & -1 & -\frac{{{\ensuremath{\mathrm{x3}}}^{3}}+\left( b c-c\, \ensuremath{\mathrm{x1}}\right) \, \ensuremath{\mathrm{x3}}-2 {{c}^{2}}}{{{\ensuremath{\mathrm{x3}}}^{3}}}\end{pmatrix}\]

Startvektorfeld
(%i12) v : col ( invert ( Q ) , n ) $
v : list_matrix_entries ( v ) ;

\[\operatorname{(v) }\left[ 0\operatorname{,}-1\operatorname{,}0\right] \]

Steuerbarkeitsmatrix
(%i13) P : ControllabilityMatrix ( f , v , x ) ;

\[\operatorname{(P) }\begin{pmatrix}0 & 1 & a\\ -1 & -a & 1-{{a}^{2}}\\ 0 & 0 & \ensuremath{\mathrm{x3}}\end{pmatrix}\]

Ableitung der Ausgangsaufschaltung
(%i14) : ratsimp ( invert ( P ) . LieBracket ( f , v , x , 3 ) ) ;

\[\operatorname{(d\alpha ) }\begin{pmatrix}\frac{a {{\ensuremath{\mathrm{x3}}}^{2}}-c}{\ensuremath{\mathrm{x3}}}\\ -\frac{{{\ensuremath{\mathrm{x3}}}^{2}}+\ensuremath{\mathrm{x3}}-a c}{\ensuremath{\mathrm{x3}}}\\ \frac{a\, \ensuremath{\mathrm{x3}}-c}{\ensuremath{\mathrm{x3}}}\end{pmatrix}\]

Berechnung der Ausgangsaufschaltung durch Integration
(%i16) subst ( x3 = exp ( y ) , ) $
integrate ( % , y ) ;

\[\operatorname{ }\begin{pmatrix}a {{\% e}^{y}}+c {{\% e}^{-y}}\\ -{{\% e}^{y}}-a c {{\% e}^{-y}}-y\\ c {{\% e}^{-y}}+a y\end{pmatrix}\]


Created with wxMaxima.