完成矩形矩阵以产生几个方形可逆的良好条件矩阵

时间:2016-11-26 05:57:48

标签: matlab linear-algebra

如果我有一个矩形矩阵C,带有线性独立行,(在帖子底部的第一个观察中查看其预期数值的信息),其dimmension为qxn,使得q<=n我希望生成几个方形可逆矩阵T=[C;R]

这里重要的一点是矩阵T应该有条件(条件数接近1 )。

我编写了一个代码,以非常有效的方式解决了这个问题:

 clear all
 C=[1 0]; %example
 tol=0.1;

 n=size(C,2);
 q=size(C,1);

 singularity=1;
 it=0;
 while(singularity==1)
    a=-5;
    b=5;
    R=a + (b - a) .* rand(n - q, n); %generates randomic R matrix with numerical values beetwen 'a' and 'b'
    M=[C;R];
    if(abs(cond(M)-1)<tol) %cond(M) computes the condition number of M
        singularity=0;
    end
    it=it+1;
end

考虑C=[1 0]算法会在700~2k次迭代的范围内收敛(但是,由于指令很简单,因此进程运行得非常快。)

现在,考虑C=[1 0 0]我被迫打破处理,因为迭代超过2kkk。

观察:我的矩阵C的值的数值通常是小的正整数(从1到10),从0到5的小的racional数字和零。

重要:对于一个给定的矩阵C只需要一个矩阵R,这将使M条件良好。在我的应用程序中,对于给定的R,我将需要几个矩阵C(我想要多少),这就是为什么我试图生成R随机的,但不幸的是在一个非常低效的方式。

备注:当然我可以找到一个R使得M条件良好,然后其他条件良好的矩阵可以是前一个的多个,但我想尝试其他方法。

1 个答案:

答案 0 :(得分:0)

一种方法是使用C&#39;的qr分解。 (C转置)这样

C' = Q * ( R )
         ( 0 )

其中R是qxq上三角和非奇异,Q是正交的。然后对于任何非奇异(n-q)x(n-q)矩阵B和任何q x(n-q)矩阵A

Q * ( R A ) 
    ( 0 B ) 

将是非单数的,并且与C&#39;具有相同的第一个q列,因此您的转置就是您想要的。

为了分析条件数,我认为将A变为零是最简单的,因为我们有

|| D || = || R || + || B || 
|| inv(D) || = || inv(R) || + || inv( B) ||
where
D = ( R 0 )
    ( 0 B )