\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)
(%i1) | load ( "vect" ) $ |
(%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 ) ) ) $ |
(%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 ) ) ) $ |
(%i7) |
f
:
[
x2
,
(
m
·
G
·
l
·
sin
(
x1
)
−
d
·
x2
+
K
·
x3
)
/
J
,
−
(
K
·
x2
+
R
·
x3
)
/
L
]
$
g : [ 0 , 0 , ( 1 / L ) ] $ x : [ x1 , x2 , x3 ] $ n : length ( x ) $ |
(%i8) | Qs : ControllabilityMatrix ( f , g , x ) ; |
\[\operatorname{(Qs) }\begin{pmatrix}0 & 0 & \frac{K}{J L}\\ 0 & \frac{K}{J L} & -\frac{K d}{{{J}^{2}} L}-\frac{K R}{J {{L}^{2}}}\\ \frac{1}{L} & -\frac{R}{{{L}^{2}}} & \frac{{{R}^{2}}}{{{L}^{3}}}-\frac{{{K}^{2}}}{J {{L}^{2}}}\end{pmatrix}\]
(%i9) | QI : ratsimp ( invert ( Qs ) ) ; |
\[\operatorname{(QI) }\begin{pmatrix}\frac{R d+{{K}^{2}}}{K} & \frac{J R}{K} & L\\ \frac{L d+J R}{K} & \frac{J L}{K} & 0\\ \frac{J L}{K} & 0 & 0\end{pmatrix}\]
(%i10) | ω : list_matrix_entries ( row ( QI , n ) ) ; |
\[\operatorname{(\omega ) }\left[ \frac{J L}{K}\operatorname{,}0\operatorname{,}0\right] \]
(%i11) | h : potential ( ω , x ) ; |
\[\operatorname{(h) }\frac{J L\, \ensuremath{\mathrm{x1}}}{K}\]
Created with wxMaxima.