Contents
P1.1 Series RLC circuit
clear variables
syms I V Vs R L C real
syms s
eq1=(L*s+R)*I+V-Vs;
eq2=C*s*V-I;
[A,B]=equationsToMatrix([eq1,eq2],[I,V]);
S=linsolve(A,B);
disp('Circuit variables:')
disp('Inductor current (I):'), disp(S(1))
disp('Capacitor voltage (V):'), disp(S(2))
disp('State variable model:')
C=diff(A,s);
A=-C\limit(A,s,0)
B=C\diff(B,Vs)
Circuit variables:
Inductor current (I):
(C*Vs*s)/(C*L*s^2 + C*R*s + 1)
Capacitor voltage (V):
Vs/(C*L*s^2 + C*R*s + 1)
State variable model:
A =
[ -R/L, -1/L]
[ 1/C, 0]
B =
1/L
0
P1.2 Parallel RLC circuit
clear variables
syms I V Is R L C real
syms s
eq1=(C*s+1/R)*V+I-Is;
eq2=L*s*I-V;
[A,B]=equationsToMatrix([eq1,eq2],[I,V]);
S=linsolve(A,B);
disp('Circuit variables:')
disp('Inductor current (I):'), disp(S(1))
disp('Capacitor voltage (V):'), disp(S(2))
disp('State variable model:')
C=diff(A,s);
A=-C\limit(A,s,0)
B=C\diff(B,Is)
Circuit variables:
Inductor current (I):
(Is*R)/(C*L*R*s^2 + L*s + R)
Capacitor voltage (V):
(Is*L*R*s)/(C*L*R*s^2 + L*s + R)
State variable model:
A =
[ 0, 1/L]
[ -1/C, -1/(C*R)]
B =
0
1/C
P1.3 DC motor
clear variables
syms V ia th om R L J b kt kb real
syms s
eq1=(L*s+R)*ia+kb*om-V;
eq2=(J*s+b)*om-kt*ia;
eq3=s*th-om;
[A,B]=equationsToMatrix([eq1,eq2,eq3],[ia,om,th]);
A=subs(A,[L,R,J,b,kt,kb],[.01,1,.01,.1,.02,.02]);
B=subs(B,[L,R,J,b,kt,kb],[.01,1,.01,.1,.02,.02]);
S=linsolve(A,B);
disp('Motor variables:')
disp('Motor current (I):'), disp(S(1))
disp('Motor speed (Omega):'), disp(S(2))
disp('Motor angle (theta):'), disp(S(3))
disp('State variable model:')
C=diff(A,s);
A=-C\limit(A,s,0)
B=C\diff(B,V)
Motor variables:
Motor current (I):
(100*V*(s + 10))/(s^2 + 110*s + 1004)
Motor speed (Omega):
(200*V)/(s^2 + 110*s + 1004)
Motor angle (theta):
(200*V)/(s*(s^2 + 110*s + 1004))
State variable model:
A =
[ -100, -2, 0]
[ 2, -10, 0]
[ 0, 1, 0]
B =
100
0
0
P1.4 Human postural dynamics
clear variables
syms m l I th Dth DDth T g real
eq=(I+m*l^2)*DDth-m*g*l*th-T;
DDth=solve(eq,DDth);
disp('State variable model:')
A=jacobian([Dth DDth],[th Dth]);
B=jacobian([Dth DDth],[T]);
A=subs(A,[m l I g],[80 1 4 9.8])
B=subs(B,[m l I g],[80 1 4 9.8])
State variable model:
A =
[ 0, 1]
[ 28/3, 0]
B =
0
1/84
P1.5 Inverted pendulum over cart
clear variables
syms M m l y th Dy Dth DDy DDth g f real
eq1=(M+m)*DDy+m*l*DDth*cos(th)-m*l*Dth^2*sin(th)-f;
eq2=DDy*cos(th)+l*DDth-g*sin(th);
DD=solve(eq1,eq2, DDy, DDth);
disp('State variable model:')
A=jacobian([Dy Dth DD.DDy DD.DDth],[y,Dy,th,Dth]);
B=jacobian([Dy Dth DD.DDy DD.DDth],[f]);
A=subs(A,[y,th,Dy,Dth],[0,0,0,0])
B=subs(B,[y,th,Dy,Dth],[0,0,0,0])
Warning: The solutions are valid under the following conditions: l ~= 0.
To include parameters and conditions in the solution, specify the
'ReturnConditions' option.
State variable model:
A =
[ 0, 1, 0, 0]
[ 0, 0, 0, 1]
[ 0, 0, -(g*m)/M, 0]
[ 0, 0, (M*g + g*m)/(M*l), 0]
B =
0
0
1/M
-1/(M*l)