回 帖 发 新 帖 刷新版面

主题:求教:关于向量组的秩

如果已知一个向量组A,假设一个列向量b,使得rank(A)=rank(A,b),我能不能求解列向量b?
各位高手帮帮忙~~~

回复列表 (共6个回复)

沙发


没人回答吗?
芝麻来高手~~~~

板凳


还是没人吗?
我再把问题说的详细点吧,现在一个矩阵A(8*7),rank(A)=7,求矩阵b(8*1),使得A*x=b有解,但要保证b(8*1)中的元素为0—255的整数。
我现在就是不知道该怎么寻找这个b!
芝麻来高手~~~

3 楼

今天看到,先告诉你,这个b向量是可以求解的,利用矩阵A与增广矩阵的秩相等,就可以,你可以试一下这个函数 randint (可以产生随机整数)
稍微思考了下,补充如下:
首先说一点,这个 b 向量是可以构造的,这应该说是一个数学问题,
% 求解向量 b ,供参考
A=randint(8,7,[0,15]); % 随机产生矩阵 A
b=sum(A'); % 对A的各行加和作为新的向量 b
if rank(A)==rank([A,b'])&rank(A)==7
    disp('找到了满足条件的 向量 b');
    b
end
运行结果:

找到了满足条件的 向量 b

b =

    53    50    55    40    46    42    64    59

有时候也可以随机产生向量 b 的例如下面的例子:
% 要求矩阵 A 是 n*n 的 ,供参考
% 下面令 n =8 ,随机产生,结果也是随机的,只是说明向量 b 是可以求解的
A=randint(8,8,[1,10]);
bs=randint(8,1,[0,255]);
b=zeros(1,8)';
B=[A,bs];
if rank(A)==rank(B)
    disp('所求的 b 向量找到了');
    b=bs;
end
b'

运行结果:

所求的 b 向量找到了

ans =

    15    33   115   172   219   127    12    80

4 楼

首先,非常非常感谢你的解答!!!
其次,我的理解是:你指出了一种构造矩阵A,b的方法(其中rank(A)=rank(A,b),而且b是0-255的整数矩阵)。
但我的问题是:A是已知的,而且A是实数域的矩阵,b是要求解的,而且b的约束条件是:rank(A)=rank(A,b),b是0-255的整数矩阵。

不知道我的理解对不对

5 楼

另外,我还有个问题:
一个function的参数是0.232323,我现在想看看参数只改变很小的情况下,function的结果会不会有变化,所以我就把参数改为0.23232300000000001,后来我发现这样改不行,因为计算机中双精度数有效位只有16位,而我改的参数有17位,计算机不能识别;为了能观察参数改变小于1.0e-16情况下,结果的变化,后来我又想了个办法,我第一个参数为1.0e-16,然后参数依次改为1.1e-16,1.01e-16,1.001e-16,我觉得就这样可以了。
我不知道我上面说的对不对,计算机和matlab双重菜鸟真心求教!

6 楼

今天休息,随便逛逛发现又有人回帖了,本以为会是有人写出了好的解决问题的方法,进来后我晕倒了,您老竟然在自己这儿回复我帖子,您这是给自己回帖吧。关于你的这个求解右端向量 b 实际上不怎么好解决,理论上可以,如果一直实数域矩阵 A ,找到一个向量 b ,使得秩相等,这对于b可以选择的空间太大,编程可能会比较复杂,而且效果还不一定好。另外,你问修改参数的问题,我感觉最好不要修改参数,这本身就是设置好的,看到你问修改参数的问题我真的要痛哭流涕了,竟然会问这种问题,如果你是开发MATLAB 或者计算机的我表示理解...[em54]

我来回复

您尚未登录,请登录后再回复。点此登录或注册