12.VL: QR-Zerlegung, Gram-Schmidt Verfahren
1. Test zur Genauigkeit
Called Functions
d=1.d-8; A = [1,1,1;d,0,0;0,d,0;0,0,d]; [Q,R] = gramschmidt(A); Q'*Q
ans = 1.0000 -0.0000 -0.0000 -0.0000 1.0000 0.5000 -0.0000 0.5000 1.0000
[Q,R] = modgramschmidt(A); Q'*Q
ans = 1.0000 -0.0000 -0.0000 -0.0000 1.0000 0.0000 -0.0000 0.0000 1.0000
2. Test zur Genauigkeit
dims = [1:160]; err = 0* dims; errmod = 0*dims; errref = 0*dims; for dim = dims A = randn(dim); [Q,R] = gramschmidt(A); err(dim) = max(max(abs(Q*Q'-eye(dim)))); [Q,R] = modgramschmidt(A); errmod(dim) = max(max(abs(Q*Q'-eye(dim)))); [Q,R] = qr(A); errref(dim) = max(max(abs(Q*Q'-eye(dim)))); end semilogy(dims,err,'x',dims,errmod,'o',dims,errref,'r.') shg