>> A = [2, 1, 0, 0; 1, 2, 1, 0; 0, 1, 2, 1; 0, 0, 1, 2] A = 2 1 0 0 1 2 1 0 0 1 2 1 0 0 1 2 Zjistim uhel, o ktery je potreba zrotovat 1. sloupec, aby byl snulovan subdiagonalni prvek. >> alpha = atan(A(2,1)/A(1,1)) alpha = 1.1071 Vytvorim transformaci rotace >> c = cos(alpha) c = 0.44721 >> s = sin(alpha) s = 0.89443 >> ROT1 = [c,s,0,0;-s,c,0,0;0,0,1,0;0,0,0,1] ROT1 = 0.89443 0.44721 0.00000 0.00000 -0.44721 0.89443 0.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 >> A1 = ROT1 * A A1 = 2.23607 1.78885 0.44721 0.00000 0.00000 1.34164 0.89443 0.00000 0.00000 1.00000 2.00000 1.00000 0.00000 0.00000 1.00000 2.00000 Pokracujeme dalsi sloupcem. >> alpha = atan(A1(3,2)/A1(2,2)) alpha = 0.64052 >> c = cos(alpha) c = 0.80178 >> s = sin(alpha) s = 0.59761 >> ROT2 = [1, 0,0,0; 0, c,s,0;0,-s,c,0;0,0,0,1] ROT2 = 1.00000 0.00000 0.00000 0.00000 0.00000 0.80178 0.59761 0.00000 0.00000 -0.59761 0.80178 0.00000 0.00000 0.00000 0.00000 1.00000 >> A2 = ROT2 * A1 A2 = 2.23607 1.78885 0.44721 0.00000 0.00000 1.67332 1.91237 0.59761 0.00000 -0.00000 1.06904 0.80178 0.00000 0.00000 1.00000 2.00000 pokracuji 3 sloupcem: >> alpha = atan(A2(4,3)/A2(3,3)) alpha = 0.75204 >> s = sin(alpha) s = 0.68313 >> c = cos(alpha) c = 0.73030 >> ROT3 = [1, 0,0,0; 0, 1,0,0;0,0,c,s;0,0,-s,c] ROT3 = 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.73030 0.68313 0.00000 0.00000 -0.68313 0.73030 >> R = ROT3 * A2 R = 2.23607 1.78885 0.44721 0.00000 0.00000 1.67332 1.91237 0.59761 0.00000 -0.00000 1.46385 1.95180 0.00000 0.00000 0.00000 0.91287 >> Q = (ROT3 * ROT2 * ROT1)' Q = 0.89443 -0.35857 0.19518 -0.18257 0.44721 0.71714 -0.39036 0.36515 0.00000 0.59761 0.58554 -0.54772 0.00000 0.00000 0.68313 0.73030 >> Q * R ans = 2.00000 1.00000 0.00000 -0.00000 1.00000 2.00000 1.00000 0.00000 0.00000 1.00000 2.00000 1.00000 0.00000 0.00000 1.00000 2.00000 Krok QR-algoritmu bez Wilkinsonova posunu >> Q' * A * Q ans = 2.80000 0.74833 -0.00000 0.00000 0.74833 2.34286 0.87482 0.00000 0.00000 0.87482 2.19048 0.62361 0.00000 0.00000 0.62361 0.66667