MATLAB中的Vandermonde矩阵的SVD不准确?

时间:2014-01-21 16:14:58

标签: matlab svd

我注意到MATLAB中Vandermonde矩阵的SVD并不总能产生正确的结果。我尝试过以下示例:

C=fliplr(vander(linspace(7,8,20)));
[U,Sigma,V]=svd(C);
Cnew=U*Sigma*V';
E=abs(Cnew-C)./abs(C);

第二列中的平均相对误差为7%,但有些元素的误差为100-200%。所有其他列似乎都有更低的错误,这似乎也不自然。

我有Matlab 6.5版,我不知道以后的版本是否更准确。有没有办法用Matlab计算这个SVD更准确,还是我必须求助于外部数值库? (我在考虑LAPACK,但我不确定Matlab是否也使用LAPACK算法。)

非常感谢!

PS:通过在互联网上进行研究,我发现Vandermonde矩阵特别棘手(例如http://math.mit.edu/~plamen/files/chebvand.pdfhttp://www-math.mit.edu/~plamen/talks/mit02.pdf)。

PS2:我面临的实际问题是找到C=[A,-B]的SVD,其中

A=VAN(1:N,1:Q);
B=diag(data)*VAN(1:N,1:Q+1);

其中VAN=fliplr(vander(linspace(7,8,N)));data是在linspace(7,8,N)点测量或计算的N个值的数组。 Q应小于N

然而,由于我甚至无法正确找到VAN的SVD,我认为这将是一个很好的起点。

0 个答案:

没有答案