Sum and intersection of subspaces (original) (raw)
Please note that the recommended version of Scilab is 2026.0.1. This page might be outdated.
See the recommended documentation of this function
Scilab help >> Linear Algebra > spantwo
spantwo
sum and intersection of subspaces
Calling Sequence
[Xp,dima,dimb,dim]=spantwo(A,B, [tol])
Arguments
A, B
two real or complex matrices with equal number of rows
Xp
square non-singular matrix
dima, dimb, dim
integers, dimension of subspaces
tol
nonnegative real number
Description
Given two matrices A and B with same number of rows, returns a square matrix Xp (non singular but not necessarily orthogonal) such that :
[A1, 0] (dim-dimb rows) Xp*[A,B]=[A2,B2] (dima+dimb-dim rows) [0, B3] (dim-dima rows) [0 , 0]
The first dima columns of inv(Xp) span range(A).
Columns dim-dimb+1 to dima of inv(Xp) span the intersection of range(A) and range(B).
The dim first columns of inv(Xp) span range(A)+range(B).
Columns dim-dimb+1 to dim of inv(Xp) span range(B).
Matrix [A1;A2] has full row rank (=rank(A)). Matrix [B2;B3] has full row rank (=rank(B)). Matrix [A2,B2] has full row rank (=rank(A inter B)). Matrix [A1,0;A2,B2;0,B3] has full row rank (=rank(A+B)).
Examples
A=[1,0,0,4;
5,6,7,8;
0,0,11,12;
0,0,0,16];
B=[1,2,0,0]';C=[4,0,0,1];
Sl=ss2ss(syslin('c',A,B,C),rand(A));
[no,X]=contr(Sl('A'),Sl('B'));CO=X(:,1:no);
[uo,Y]=unobs(Sl('A'),Sl('C'));UO=Y(:,1:uo);
[Xp,dimc,dimu,dim]=spantwo(CO,UO);
Slcan=ss2ss(Sl,inv(Xp));