Bibliothek für Berechnung des Potentials
(%i1) load ( "vect" ) $
Lie-Klammer bzw. Lie-Ableitung eines Vektorfeldes
(%i2) 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
(%i3) 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: Inveses Pendel mit Trägheitsrad
(%i6) f : [ x2 , ( m0 · sin ( x1 ) ) / ( J1 I2 ) , ( m0 · sin ( x1 ) ) / ( J1 I2 ) ] ;
g : [ 0 , 1 / ( J1 I2 ) , J1 / ( I2 · ( J1 I2 ) ) ] ;
x : [ x1 , x2 , x3 ] ;

\[\operatorname{(f) }\left[ \ensuremath{\mathrm{x2}}\operatorname{,}\frac{\ensuremath{\mathrm{m0}} \sin{\left( \ensuremath{\mathrm{x1}}\right) }}{\ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}}\operatorname{,}-\frac{\ensuremath{\mathrm{m0}} \sin{\left( \ensuremath{\mathrm{x1}}\right) }}{\ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}}\right] \]

\[\operatorname{(g) }\left[ 0\operatorname{,}-\frac{1}{\ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}}\operatorname{,}\frac{\ensuremath{\mathrm{J1}}}{\ensuremath{\mathrm{I2}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) }\right] \]

\[\operatorname{(x) }\left[ \ensuremath{\mathrm{x1}}\operatorname{,}\ensuremath{\mathrm{x2}}\operatorname{,}\ensuremath{\mathrm{x3}}\right] \]

Berechnung der Steuerbarkeitsmatrix
(%i7) Qs : ControllabilityMatrix ( f , g , x ) ;

\[\operatorname{(Qs) }\begin{pmatrix}0 & -\frac{1}{\ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}} & 0\\ -\frac{1}{\ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}} & 0 & -\frac{\ensuremath{\mathrm{m0}} \cos{\left( \ensuremath{\mathrm{x1}}\right) }}{{{\left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) }^{2}}}\\ \frac{\ensuremath{\mathrm{J1}}}{\ensuremath{\mathrm{I2}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) } & 0 & \frac{\ensuremath{\mathrm{m0}} \cos{\left( \ensuremath{\mathrm{x1}}\right) }}{{{\left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) }^{2}}}\end{pmatrix}\]

Orthogonales Komplement zu den ersten zwei Spalten
(%i9) orthogonal_complement ( col ( Qs , 1 ) , col ( Qs , 2 ) ) $
Ω : factor ( % ) ;

\[\operatorname{(\Omega ) }\operatorname{span}\left( \begin{pmatrix}0\\ \ensuremath{\mathrm{J1}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) \\ \ensuremath{\mathrm{I2}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) \end{pmatrix}\right) \]

Differentialfrom/Kovektorfeld
(%i10) ω : list_matrix_entries ( first ( args ( Ω ) ) ) ;

\[\operatorname{(\omega ) }\left[ 0\operatorname{,}\ensuremath{\mathrm{J1}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) \operatorname{,}\ensuremath{\mathrm{I2}}\, \left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) \right] \]

Potential/Ausgangsabbildung
(%i11) h : factor ( potential ( ω , x ) ) ;

\[\operatorname{(h) }\left( \ensuremath{\mathrm{J1}}-\ensuremath{\mathrm{I2}}\right) \, \left( \ensuremath{\mathrm{I2}}\, \ensuremath{\mathrm{x3}}+\ensuremath{\mathrm{J1}}\, \ensuremath{\mathrm{x2}}\right) \]


Created with wxMaxima.