Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Controllability of state space equation

  1. May 6, 2010 #1
    1. The problem statement, all variables and given/known data
    I have calculated the following mechanical system


    \left( \begin{array}{c}\dot{\mathbf{x_1}}(t) & \dot{\mathbf{x_2}}(t) \end{array} \right) = \left( \begin{array}{cc}-0.5 & 0 & 0 & -1\end{array} \right) \cdot \left( \begin{array}{c}x_{1}(t) & x_{2}(t)\end{array} \right) + \left( \begin{array}{c}0.5 & 1\end{array} \right)\cdot u(t)



    \left( \begin{array}{c}y_{1}(t) & y_{2}(t)\end{array} \right) = \left( \begin{array}{cc}1 & 0\end{array} \right) \cdot \left( \begin{array}{c}x_{1}(t) & x_{2}(t)\end{array} \right)


    The question is to find the expression for u(t) that brings the system to its restposition in 2 seconds. Afterwards i have to simulate this time response in matlab with the function lsim.

    The initial conditions of the system are:

    x_1(0) = 10


    x_2(0) = -1


    2. Relevant equations

    u(t) = -B^T\exp^{A^T(t_1-t)}W_c^{-1}(t_1)[\exp^{At_1}x_0-x_1]


    W_c(t_1) = \int_0^{t_1} \exp^{A\gamma}BB^T\exp^{A^T\gamma} d\gamma


    3. The attempt at a solution
    I calculated u(t) with matlab with the following code
    Code (Text):

    A = [-0.5 0;0 1];
    B = [0.5; 1];
    C = [1 0];
    D = 0;
    syms t;
    Wc = int(expm(A*t)*B*transpose(B)*expm(transpose(A)*t),0,2);
    u = -transpose(B)*expm(transpose(A)*(2-t))*inv(Wc)*(expm(A*2)*[10;-1]-[0;0]);
    sys = ss(A,B,C,D);
    t = 0:0.1:2;
    u = subs(u,t);
    But the result i get with lsim doesn't fulfill my expectations at all.
    The result i get is given in the lsimresults.bmp.
    While i expect it to curve a bit down/up the original time responses (1st and 2nd thumbnails) where u(t) = 0, so that the amplitude of the system becomes 0 at 2 seconds.

    So, if you there is anybody who can give me some help where it goes wrong. Or if i interpretate something wrong maybe?

    Attached Files:

  2. jcsd
  3. Nov 8, 2010 #2
    Where did you get those equations, your system is not doing what you want it to do I agree.

    I've tried using state feedback to solve your problem, here is what I got:


    where [tex]x=[x_1 \, x_2]^{T}[/tex]
    and [tex]K=[K_1 \, K_2] [/tex]

    You then choose the eigenvalues of the closed loop system
    [tex](sI-A+BK)[/tex] by varying K such that they have the properties you want.

    In this case you want a settling time of 2s, so I would make both of my eigenvalues equal to -2, which gives us the desired characteristic polynomial of


    Now to go about solving for [tex]K[/tex],

    the controllers characteristic polynomial is

    All you do now is compare the desired characteristic polynomial with the actual characteristic polynomial and solve for [tex]K_1, K_2[/tex] such that the co-efficients of the two characteristic polynomials are equal i.e.

    [tex]\alpha_2 = 1[/tex]
    [tex]\alpha_1 = 2[/tex]
    [tex]\alpha_0 = 4[/tex]

    For this system there is a pole that no matter what feedback you give the system, will not move higher

    the pole is located at approx. -0.74

    If the settling time we are talking about is 0-63% of final value then you are ok.
    The other pole you can shift around at whim using this technique.

    The gains I used are [tex]K=[1 \, 2][/tex] to give poles at -0.73 and -5.76

    I don't have access to matlab now but try its "place" command
    maybe you can have better luck that way :smile:
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook