<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="m2120">
  
  <name>Controllability</name>
  
  <metadata>
  <md:version>2.13</md:version>
  <md:created>2001/04/09</md:created>
  <md:revised>2003/10/27 14:55:19.508 US/Central</md:revised>
  <md:authorlist>
    <md:author id="aca">
      <md:firstname>Thanos</md:firstname>
      
      <md:surname>Antoulas</md:surname>
      <md:email>aca@rice.edu</md:email>
    </md:author>
    <md:author id="jps">
      <md:firstname>John</md:firstname>
      <md:othername>Paul</md:othername>
      <md:surname>Slavinsky</md:surname>
      <md:email>jps@alumni.rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="lizychan">
      <md:firstname>Elizabeth</md:firstname>
      
      <md:surname>Chan</md:surname>
      <md:email>lizychan@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="aca">
      <md:firstname>Thanos</md:firstname>
      
      <md:surname>Antoulas</md:surname>
      <md:email>aca@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="jps">
      <md:firstname>John</md:firstname>
      <md:othername>Paul</md:othername>
      <md:surname>Slavinsky</md:surname>
      <md:email>jps@alumni.rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  

  <md:abstract>(Blank Abstract)</md:abstract>
</metadata>

  
  <content>
    <para id="para0">What do we mean by the term <term>controllability</term>?  Simply put, we want to know if we can control the state of a system when we only have access to the inputs (i.e. when we can not directly modify the system's state).  If we can "steer" a system to a certain state by controlling its inputs, we can then ask ourselves if there is a way to find the most efficient method of making this transformation.</para>
    
    <section id="s1">
      <name>Developing the Concept of a Controllable Space</name>
      
      <para id="p0">Say we have the following system:

	<equation id="eq1">
	  <m:math>
	    <m:apply>
	      <m:eq/>	
	      <m:apply other="dot">
		<m:diff/>
		<m:ci type="matrix">x</m:ci>
	      </m:apply>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:ci>A</m:ci>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>t</m:ci>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:times/>
		  <m:ci>B</m:ci>
		  <m:apply>
		    <m:ci type="fn">u</m:ci>
		    <m:ci>t</m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</equation>
	
      </para>
      
      <figure id="fig1">
	<name>Example RLC Circuit</name>
	<media type="image/png" src="control_rlc.png"/>
      </figure>
      
      <para id="p1">
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:ci type="matrix">x</m:ci>
	    <m:matrix>
	      <m:matrixrow><m:ci><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:ci></m:matrixrow>
	      <m:matrixrow><m:ci><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:ci></m:matrixrow>
	    </m:matrix>
	</m:apply>
	</m:math>
	
	In this case, an example controllability question could seek
	to know if there exists an input u such that:

	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:ci type="fn">x</m:ci>
	      <m:apply>
		<m:times/>
		<m:cn>1</m:cn>
		<m:ci>ms</m:ci>
	      </m:apply>
	    </m:apply>
	    <m:matrix>
	      <m:matrixrow>
		<m:apply>
		  <m:times/>
		  <m:cn>10</m:cn>
		  <m:ci>V</m:ci>
		</m:apply>
	      </m:matrixrow>
	      <m:matrixrow>
		<m:apply>
		  <m:times/>
		  <m:cn>1</m:cn>
		  <m:ci>A</m:ci>
		</m:apply>
	      </m:matrixrow>
	    </m:matrix>
	  </m:apply>
	</m:math>
      </para>
      
      <para id="p2">Instead of deriving the general solution for what is called a system's controllable space,
	<m:math><m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci></m:math>,
	we will simply state it and then give a justification for it.</para>
      
      <para id="p3">Formally,
	<m:math><m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci></m:math>
	is the set of all controllable states.  We will define it in terms of a quantity known as the controllability matrix,
	<m:math><m:apply><m:ci type="fn">C</m:ci><m:ci>A</m:ci><m:ci>B</m:ci></m:apply></m:math>:
	
	<equation id="eq2">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">C</m:ci>
		<m:ci>A</m:ci>
		<m:ci>B</m:ci>
	      </m:apply>
	      <m:matrix>
		<m:matrixrow>
		  <m:ci>B</m:ci>
		  <m:apply>
		    <m:times/>
		    <m:ci>A</m:ci>
		    <m:ci>B</m:ci>
		  </m:apply>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:power/>
		      <m:ci>A</m:ci>
		      <m:cn>2</m:cn>
		    </m:apply>
		    <m:ci>B</m:ci>
		  </m:apply>
		  <m:ci>…</m:ci>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:power/>
		      <m:ci>A</m:ci>
		      <m:apply>
			<m:minus/>
			<m:ci>n</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:apply>
		    <m:ci>B</m:ci>
		  </m:apply>
		</m:matrixrow>
	      </m:matrix>
	    </m:apply>
	  </m:math>
	</equation>
	
	The controllable space can then be found by taking the image of this matrix.
	
	<equation id="eq3">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci>
	      <m:apply>
		<m:ci type="fn">im</m:ci>
		<m:apply><m:ci type="fn">C</m:ci><m:ci>A</m:ci><m:ci>B</m:ci></m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</equation>
	
      </para>
      
      <para id="p4">To justify this expression, we begin with the
	formal matrix equation for a system's state and substitute in
	the infinite series definition of the matrix exponential.  We
	can then extract the <m:math><m:ci type="matrix">A</m:ci></m:math> and <m:math><m:ci type="matrix">B</m:ci></m:math>
	matrices into a larger matrix multiplication.

<equation id="eqex">
  <m:math>
    <m:apply>
    <m:eq/>
      <m:ci>x</m:ci>

      <m:apply>
      <m:int/>
        <m:bvar><m:ci>τ</m:ci></m:bvar>
        <m:apply>
        <m:times/>
          <m:apply>
          <m:exp/>
            <m:apply>
            <m:times/>
              <m:ci type="matrix">A</m:ci>
              <m:apply>
              <m:minus/>
                <m:ci>t</m:ci>
                <m:ci>τ</m:ci>
              </m:apply>
            </m:apply>
          </m:apply>
          <m:ci type="matrix">B</m:ci>
          <m:apply>
            <m:ci type="fn">u</m:ci>
            <m:ci>τ</m:ci>
          </m:apply>
        </m:apply>
      </m:apply>

      <m:apply>
      <m:int/>
        <m:bvar><m:ci>τ</m:ci></m:bvar>
        <m:apply>
        <m:times/>
          <m:apply>
          <m:plus/>
            <m:ci type="matrix">I</m:ci>
            <m:apply>
            <m:times/>
              <m:ci type="matrix">A</m:ci>
              <m:apply>
              <m:minus/>
                <m:ci>t</m:ci>
                <m:ci>τ</m:ci>
              </m:apply>
            </m:apply>
            <m:apply>
            <m:times/>
              <m:apply>
              <m:divide/>
                <m:apply>
                <m:power/>
                  <m:ci type="matrix">A</m:ci>
                  <m:cn>2</m:cn>
                </m:apply>
                <m:cn>2</m:cn>
              </m:apply>
              <m:apply>
              <m:power/>
                <m:apply>
                <m:minus/>
                  <m:ci>t</m:ci>
                  <m:ci>τ</m:ci>
                </m:apply>
                <m:cn>2</m:cn>
              </m:apply>
            </m:apply>
            <m:ci>…</m:ci>
          </m:apply>
          <m:ci>B</m:ci>
          <m:apply>
            <m:ci type="fn">u</m:ci>
            <m:ci>τ</m:ci>
          </m:apply>
        </m:apply>
      </m:apply>

      <m:apply>
      <m:plus/>
        <m:apply>
        <m:times/>
          <m:ci type="matrix">B</m:ci>
          <m:apply>
          <m:int/>
            <m:bvar><m:ci>τ</m:ci></m:bvar>
            <m:apply>
              <m:ci type="fn">u</m:ci>
              <m:ci>τ</m:ci>
            </m:apply>
          </m:apply>
        </m:apply>
        <m:apply>
        <m:times/>
          <m:ci type="matrix">A</m:ci>
          <m:ci type="matrix">B</m:ci>
          <m:apply>
          <m:int/>
            <m:bvar><m:ci>τ</m:ci></m:bvar>
            <m:apply>
            <m:times/>
              <m:apply>
              <m:divide/>
                <m:apply>
                <m:minus/>
                  <m:ci>t</m:ci>
                  <m:ci>τ</m:ci>
                </m:apply>
                <m:apply>
                <m:factorial/>
                  <m:cn>1</m:cn>
                </m:apply>
              </m:apply>
              <m:apply>
                <m:ci type="fn">u</m:ci>
                <m:ci>τ</m:ci>
              </m:apply>
            </m:apply>
          </m:apply>
        </m:apply>
        <m:apply>
        <m:times/>
          <m:apply>
          <m:power/>
            <m:ci type="matrix">A</m:ci>
            <m:cn>2</m:cn>
          </m:apply>
          <m:ci type="matrix">B</m:ci>
          <m:apply>
          <m:int/>
            <m:bvar><m:ci>τ</m:ci></m:bvar>
            <m:apply>
            <m:times/>
              <m:apply>
              <m:divide/>
                <m:apply>
                <m:power/>
                  <m:apply>
                  <m:minus/>
                    <m:ci>t</m:ci>
                    <m:ci>τ</m:ci>
                  </m:apply>
                  <m:cn>2</m:cn>
                </m:apply>
                <m:apply>
                <m:factorial/>
                  <m:cn>2</m:cn>
                </m:apply>
              </m:apply>
              <m:apply>
                <m:ci type="fn">u</m:ci>
                <m:ci>τ</m:ci>
              </m:apply>
            </m:apply>
          </m:apply>
        </m:apply>
        <m:ci>…</m:ci>
      </m:apply>


      <m:apply>
      <m:times/>
        <m:matrix>
          <m:matrixrow>
            <m:ci type="matrix">B</m:ci>
            <m:apply>
            <m:times/>
              <m:ci type="matrix">A</m:ci>
              <m:ci type="matrix">B</m:ci>
            </m:apply>
            <m:apply>
            <m:times/>
              <m:apply>
              <m:power/>
                <m:ci type="matrix">A</m:ci>
                <m:cn>2</m:cn>
              </m:apply>
              <m:ci type="matrix">B</m:ci>
            </m:apply>
            <m:ci>…</m:ci>
            <m:apply>
            <m:times/>
              <m:apply>
              <m:power/>
                <m:ci type="matrix">A</m:ci>
                <m:apply>
                <m:minus/>
                  <m:ci>n</m:ci>
                  <m:cn>1</m:cn>
                </m:apply>
              </m:apply>
              <m:ci type="matrix">B</m:ci>
            </m:apply>
          </m:matrixrow>
        </m:matrix>
        <m:matrix>
          <m:matrixrow>
		  <m:apply>
		    <m:int/>
		    <m:bvar><m:ci>τ</m:ci></m:bvar>
		    <m:apply>
		      <m:ci type="fn">u</m:ci>
		      <m:ci>τ</m:ci>
		    </m:apply>
		  </m:apply>
		</m:matrixrow>
		<m:matrixrow>
		  <m:apply>
		    <m:int/>
		    <m:bvar><m:ci>τ</m:ci></m:bvar>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:minus/>
			<m:ci>t</m:ci>
			<m:ci>τ</m:ci>
		      </m:apply>
		      <m:apply>
			<m:ci type="fn">u</m:ci>
			<m:ci>τ</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:matrixrow>
		<m:matrixrow><m:ci>⋮</m:ci></m:matrixrow>
		<m:matrixrow>
		  <m:apply>
		    <m:int/>
		    <m:bvar><m:ci>τ</m:ci></m:bvar>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:divide/>
			<m:apply>
			  <m:power/>
			  <m:apply>
			    <m:minus/>
			    <m:ci>t</m:ci>
			    <m:ci>τ</m:ci>
			  </m:apply>
			  <m:ci>n</m:ci>
			</m:apply>
			<m:apply>
			  <m:factorial/>
			  <m:ci>n</m:ci>
			</m:apply> 
		      </m:apply>
		      <m:apply>
			<m:ci type="fn">u</m:ci>
			<m:ci>τ</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:matrixrow>
	      </m:matrix>
	    </m:apply>
	  </m:apply>
	  
	</m:math>
</equation>
	
	As the second term in the multiplication is dependent on <m:math><m:ci>u</m:ci></m:math>,
	it can be thought of as a free variable.  Therefore, the set
	of possible values for <m:math><m:ci>x</m:ci></m:math>
is dependent on the image of first term, which can be seen to be the controllability matrix as defined above.</para>
      
      <para id="p5">Continuing the example circuit started above, we can get a better feel for what controllability means.  Here are the state equations:
	
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:diff/>
	      <m:ci><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:ci>
	    </m:apply>
	    <m:apply>
	      <m:plus/>	
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>-1</m:cn>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		    <m:ci type="matrix">C</m:ci>
		  </m:apply>
		</m:apply>
		<m:ci><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:ci>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		    <m:ci type="matrix">C</m:ci>
		  </m:apply>
		</m:apply>
		<m:ci>u</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
	
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:diff/>
		<m:ci><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:ci>
	    </m:apply>
	    <m:apply>
	      <m:plus/>	
	      <m:apply>
		<m:minus/>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:divide/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>2</m:mn></m:msub></m:ci>
		    <m:ci>L</m:ci>
		  </m:apply>
		  <m:ci><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:ci>L</m:ci>
		</m:apply>
		<m:ci>u</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
	
	Pulling the <m:math><m:ci type="matrix">A</m:ci></m:math> and 
<m:math><m:ci type="matrix">B</m:ci></m:math>
	matrices out of these equations, we can compute the controllability matrix
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:ci type="fn">C</m:ci>
	      <m:ci type="matrix">A</m:ci>
	      <m:ci type="matrix">B</m:ci>
	    </m:apply>
	    <m:matrix>
	      <m:matrixrow><m:ci type="matrix">A</m:ci><m:apply><m:times/><m:ci type="matrix">A</m:ci><m:ci type="matrix">B</m:ci></m:apply></m:matrixrow>
	    </m:matrix>
	  </m:apply>
	</m:math>.
	Note that as it is only a second order system, the controllability matrix is only two-dimensional.
	
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:ci type="fn">C</m:ci>
	      <m:ci type="matrix">A</m:ci>
	      <m:ci type="matrix">B</m:ci>
	    </m:apply>
	    <m:matrix>
	      <m:matrixrow>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		    <m:ci type="matrix">C</m:ci>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:divide/>
		  <m:cn>-1</m:cn>
		  <m:apply>
		    <m:power/>
		    <m:apply>
		      <m:times/>
		      <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		      <m:ci type="matrix">C</m:ci>
		    </m:apply>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:apply>
	      </m:matrixrow>
	      <m:matrixrow>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:ci>L</m:ci>
		</m:apply>
		<m:apply>
		  <m:minus/>
		  <m:apply>
		    <m:divide/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>2</m:mn></m:msub></m:ci>
		    <m:apply>
		      <m:power/>
		      <m:ci>L</m:ci>
		      <m:cn>2</m:cn>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:matrixrow>
	    </m:matrix>
	  </m:apply>
	</m:math>
	
      </para>
      
      <para id="p6">Immediately, we can understand some things about
	the system by looking at the rank of the <m:math><m:ci type="matrix">C</m:ci></m:math>
	matrix.  Let's look at the determinant:
	
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:determinant/>
	      <m:ci type="matrix">C</m:ci>
	    </m:apply>
	    <m:apply>
	      <m:times/>	
	      <m:apply>
		<m:divide/>
		<m:cn>1</m:cn>
		<m:apply>
		  <m:times/>	
		  <m:ci>L</m:ci>
		  <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		  <m:ci type="matrix">C</m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:minus/>
		  <m:apply>
		  <m:divide/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>2</m:mn></m:msub></m:ci>
		    <m:ci>L</m:ci>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		    <m:ci type="matrix">C</m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>

	If the determinant of the controllability matrix is non-zero, then
	<m:math>
	  <m:apply>
	    <m:eq/>
		<m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci>
	    <m:apply>
	      <m:ci type="fn">im</m:ci>
	      <m:ci type="matrix">C</m:ci>
	    </m:apply>
	    <m:ci><m:msup><m:mi>ℝ</m:mi><m:mn>2</m:mn></m:msup></m:ci>
	  </m:apply>
	</m:math>;
	the system is completely controllable.  For this to happen we'd need to ensure that

	<m:math>
	  <m:apply>
	    <m:neq/>
	    <m:apply>
	      <m:divide/>
	      <m:ci><m:msub><m:mi>R</m:mi><m:mn>2</m:mn></m:msub></m:ci>
	      <m:ci>L</m:ci>
	    </m:apply>
		<m:apply>
	      <m:divide/>
	      <m:cn>1</m:cn>
	      <m:apply>
		<m:times/>
		<m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		<m:ci>C</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>.

	
	However, if this inequality is not satisfied and the
	determinant of the controllability matrix is <m:math><m:cn>0</m:cn></m:math>,
	then we know that it is not full rank.  If it is not full rank, then
	<m:math><m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci></m:math>
will not span the entire space and the system is not completely controllable.  The physical effect here is resonance in the circuit.  This reduces our controllability matrix to only one dimension (the two columns are linearly dependent).
	
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:ci><m:msup><m:mi>X</m:mi><m:mi>contr</m:mi></m:msup></m:ci>
	    <m:apply>
	      <m:ci type="fn">span</m:ci>
	      <m:matrix>
		<m:matrixrow>
		  <m:apply>
		    <m:divide/>
		    <m:cn>1</m:cn>
		    <m:apply>
		      <m:times/>
		      <m:ci><m:msub><m:mi>R</m:mi><m:mn>1</m:mn></m:msub></m:ci>
		      <m:ci>C</m:ci>
		    </m:apply>
		  </m:apply>
		</m:matrixrow>
		<m:matrixrow>
		  <m:apply>
		    <m:divide/>
		    <m:cn>1</m:cn>
		    <m:ci>L</m:ci>
		  </m:apply>
		</m:matrixrow>
	      </m:matrix>
	    </m:apply>
	  </m:apply>
	</m:math>
      </para>
      
      
    </section>
    
  </content>
</document>
