%%稀疏矩阵左除bug
L=diag(3*ones(5,1))+diag(2*ones(4,1),-1)+diag(2*ones(4,1),1);
A=blkdiag(L,L,L,L,L)+diag(20*ones(20,1),5)+diag(20*ones(20,1),-5)
b=ones(25,1);
B=sparse(A);
x=B\b
这个求解稀疏矩阵的例子,在不使用sparse函数的时候可以得到正常结果,取sparse就会报错。
在命令行窗口使用enter或者shift+enter均无法换行
L=diag(3*ones(5,1))+diag(2*ones(4,1),-1)+diag(2*ones(4,1),1);
A=blkdiag(L,L,L,L,L)+diag(20*ones(20,1),5)+diag(20*ones(20,1),-5);
B=sparse(A);
log(abs(B(1)))
%%稀疏矩阵右除bug
L=diag(3*ones(5,1))+diag(2*ones(4,1),-1)+diag(2*ones(4,1),1);
A=blkdiag(L,L,L,L,L)+diag(20*ones(20,1),5)+diag(20*ones(20,1),-5);
B=sparse(A);
x=B/5
报错信息显示计算未支持,请将稠密矩阵转为稀疏矩阵。但是,将B转为full(B)计算可得到正确结果。
L=diag(3*ones(5,1))+diag(2*ones(4,1),-1)+diag(2*ones(4,1),1);
A=blkdiag(L,L,L,L,L)+diag(20*ones(20,1),5)+diag(20*ones(20,1),-5);
B=sparse(A);
power(abs(B(1)),5)
n = 10;
e = ones(n,1);
A = spdiags([-1*e 2*e -1*e], -1:1, n, n)
B = (1:n)' * (1:n);
X = A \ B
在这个例子中,直接计算不会报错但会得到错误的结果。使用full(A)能得到正确结果