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));