Matlab求矩阵的秩,得出的答案比实际的小,怎么回事啊?编程如下的,n取小于40的时候是正常的,n大了以后求的的结果就小了clearn=48;A=zeros(n);a=[ones(1,n)*6];c=[ones(1,n-1)*8];d=[ones(1,n-1)*1];b=[7;ones(n-2,1)*15;1

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 23:15:06

Matlab求矩阵的秩,得出的答案比实际的小,怎么回事啊?编程如下的,n取小于40的时候是正常的,n大了以后求的的结果就小了clearn=48;A=zeros(n);a=[ones(1,n)*6];c=[ones(1,n-1)*8];d=[ones(1,n-1)*1];b=[7;ones(n-2,1)*15;1
Matlab求矩阵的秩,得出的答案比实际的小,怎么回事啊?
编程如下的,n取小于40的时候是正常的,n大了以后求的的结果就小了
clear
n=48;
A=zeros(n);a=[ones(1,n)*6];c=[ones(1,n-1)*8];
d=[ones(1,n-1)*1];b=[7;ones(n-2,1)*15;14];
A=A+diag(a)+diag(c,-1)+diag(d,1);
RA=rank(A);
disp(RA);

Matlab求矩阵的秩,得出的答案比实际的小,怎么回事啊?编程如下的,n取小于40的时候是正常的,n大了以后求的的结果就小了clearn=48;A=zeros(n);a=[ones(1,n)*6];c=[ones(1,n-1)*8];d=[ones(1,n-1)*1];b=[7;ones(n-2,1)*15;1
这不是程序的问题,而是你这个矩阵当n>47的时候秩实际上确实小了,你可以动手算一算.举个简单的例子,假如把你这里的c里换成*18,那么当n=2时
A=[6 1
18 6]
秩是2,当n=3时
A=[6 1 0
18 6 1
0 18 6]
秩也是2

求解rank(A) 是将A其化为上三角阵,维数过高时,化简过程的累积误差照成最后一行变为0,
你看看rref(A)的结果就知道了
使用Maple 做就不会出现这种情况了,他的有效数字个数要大得多