主题:求教:关于向量组的秩
王森菠萝
[专家分:0] 发布于 2010-10-20 19:53:00
如果已知一个向量组A,假设一个列向量b,使得rank(A)=rank(A,b),我能不能求解列向量b?
各位高手帮帮忙~~~
回复列表 (共6个回复)
沙发
王森菠萝 [专家分:0] 发布于 2010-10-20 19:58:00
没人回答吗?
芝麻来高手~~~~
板凳
王森菠萝 [专家分:0] 发布于 2010-10-20 22:24:00
还是没人吗?
我再把问题说的详细点吧,现在一个矩阵A(8*7),rank(A)=7,求矩阵b(8*1),使得A*x=b有解,但要保证b(8*1)中的元素为0—255的整数。
我现在就是不知道该怎么寻找这个b!
芝麻来高手~~~
3 楼
沉没业空也 [专家分:0] 发布于 2010-10-22 17:45:00
今天看到,先告诉你,这个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 楼
王森菠萝 [专家分:0] 发布于 2010-10-22 20:43:00
首先,非常非常感谢你的解答!!!
其次,我的理解是:你指出了一种构造矩阵A,b的方法(其中rank(A)=rank(A,b),而且b是0-255的整数矩阵)。
但我的问题是:A是已知的,而且A是实数域的矩阵,b是要求解的,而且b的约束条件是:rank(A)=rank(A,b),b是0-255的整数矩阵。
不知道我的理解对不对
5 楼
王森菠萝 [专家分:0] 发布于 2010-10-22 20:52:00
另外,我还有个问题:
一个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 楼
沉没业空也 [专家分:0] 发布于 2010-10-22 21:27:00
今天休息,随便逛逛发现又有人回帖了,本以为会是有人写出了好的解决问题的方法,进来后我晕倒了,您老竟然在自己这儿回复我帖子,您这是给自己回帖吧。关于你的这个求解右端向量 b 实际上不怎么好解决,理论上可以,如果一直实数域矩阵 A ,找到一个向量 b ,使得秩相等,这对于b可以选择的空间太大,编程可能会比较复杂,而且效果还不一定好。另外,你问修改参数的问题,我感觉最好不要修改参数,这本身就是设置好的,看到你问修改参数的问题我真的要痛哭流涕了,竟然会问这种问题,如果你是开发MATLAB 或者计算机的我表示理解...[em54]
我来回复