Functions Used to Determine Controllability

iscontrollable
% ISCONTROLLABLE checks for controllability using normals to facets as
% testvectors
%
% Usage [CONTROLLABLE,VEC]=ISCONTROLLABLE(S,BLOCKSET,FACET)
%
% S is the polytope
% BLOCKSET is a blockable set of facets. If facet is contained in the
% BLOCKSET no solution can be found.
% FACET is the facet to be checked for controllability. FACET being in
% BLOCKSET is contradictory and therefore returns false.
%
% CONTROLLABLE is a boolean, true if the facet is controllable.
% VEC is the vector in R^N for which controllability was proven.
% If there can be no fixed point in the simplex i.e. S.FPPOSSIBLE=FALSE then
% VEC is empty
%
% Notice that if this function returns false it does not mean that no
% control exists rendering the facet controllable, but only that one could
% not be found using this method.
%
% Example:

 s=demosimplex();
 s=preparepolytope(s);
 blockset=findblockable(s);
 facet=blockset(1);
 blockset=blockset(2:end);
 controllable=iscontrollable(s,blockset,facet);

% See also ISBLOCKABLE and FINDCONTROLLABLE
findcontrollable
% FINDCONTROLLABLE checks a blockset for controllable facets
%
% Usage  [CSET,TVECS]=FINDCONTROLLABLE(S,BLOCKSET)
%
% S is the polytope
% BLOKSET is a blockable facet set on s
%
% CSET is a vector of booleans, coresponding to blockset. e.g. BLOCKSET =
% [4 5 7] and cSet=[0 1 0] means that facet 5 is controllable while 4 and 7
% are not.
% TVECS is a cell array of vectors used to test controllability.
%
% Example:

 s=demosimplex();
 s=preparepolytope(s);
 blockset=findblockable(s);
 cSet=findcontrollable(s,blockset);

% See also ISCONTROLLABLE and FINDBLOCKABLE