A^kの範囲
[X,dim]=range(A,k)
実数正方行列
整数
直交実数行列
整数 (部分空間の次元)
範囲 A^kを計算します ; X の 最初の dim 行は, A^kの範囲に広がります. Xの最後の行は, この直交相補な範囲に広がります. X*X' は単位行列です.
A^k
X
X*X'
A=rand(4,2)*rand(2,4); // 4 列ベクトル, 2 独立. [X,dim]=range(A,1);dim // 範囲を計算 y1=A*rand(4,1); //Aの範囲のベクトル y2=rand(4,1); //Aの範囲にないベクトル norm(X(dim+1:$,:)*y1) //最後のエントリはゼロ, y1 はAの範囲 norm(X(dim+1:$,:)*y2) //最後のエントリは非ゼロ I=X(1:dim,:)' //I が範囲の基底 coeffs=X(1:dim,:)*y1 // 基底Iに関連するy1の要素 norm(I*coeffs-y1) //check
range 関数は, svd分解を使用する rowcomp 関数 に基づいています.
range