octave:2> A=randn(2)+1i*randn(2) A = -0.0181 - 1.0680i 0.3548 - 1.2337i -1.7815 - 2.0245i 0.2971 - 1.0301i octave:3> A.' ans = -0.0181 - 1.0680i -1.7815 - 2.0245i 0.3548 - 1.2337i 0.2971 - 1.0301i octave:4> A' ans = -0.0181 + 1.0680i -1.7815 + 2.0245i 0.3548 + 1.2337i 0.2971 + 1.0301i octave:5> [2,1;0,2] ans = 2 1 0 2 octave:6> [2,1;0,2+4*eps] ans = 2.00000 1.00000 0.00000 2.00000 octave:7> A A = -0.0181 - 1.0680i 0.3548 - 1.2337i -1.7815 - 2.0245i 0.2971 - 1.0301i octave:8> [U,Lambda]=eig(A) U = 0.52851 + 0.23624i -0.46544 - 0.30579i 0.81539 + 0.00000i 0.83058 + 0.00000i Lambda = Diagonal Matrix -0.27101 - 2.85843i 0 0 0.55006 + 0.76033i octave:9> A*U,U*Lambda ans = 0.53204 - 1.57473i -0.02352 - 0.52209i -0.22098 - 2.33074i 0.45687 + 0.63151i ans = 0.53204 - 1.57473i -0.02352 - 0.52209i -0.22098 - 2.33074i 0.45687 + 0.63151i octave:10> A*U(:,1),U(;,1)*Lambda(1) parse error: syntax error >>> A*U(:,1),U(;,1)*Lambda(1) ^ octave:10> A*U(:,1),U(:,1)*Lambda(1) ans = 0.5320 - 1.5747i -0.2210 - 2.3307i ans = 0.5320 - 1.5747i -0.2210 - 2.3307i octave:11> octave:11> A=randn(4) A = 0.36209 0.28484 -0.12616 0.37611 0.41741 -0.75260 1.68846 0.74836 0.34928 2.18805 -1.13748 0.13781 0.42301 0.28186 -0.66054 0.73824 octave:12> A=A*A' A = 0.3696168 0.0052275 0.9450394 0.5944411 0.0052275 4.1515777 -3.3183998 -0.5983792 0.9450394 -3.3183998 6.2224214 1.6175495 0.5944411 -0.5983792 1.6175495 1.2396873 octave:13> lambda=eig(A) lambda = 0.0076256 0.7073072 2.1625348 9.1058358 octave:14> E=randn(4)*1e-10 E = -8.2695e-11 4.1343e-11 -6.3569e-12 -6.0457e-11 -1.1853e-10 6.1549e-11 3.0913e-11 -7.8128e-11 9.6014e-11 -9.1382e-11 2.6233e-12 -5.0365e-11 -5.0475e-11 9.9495e-11 -2.9607e-12 -2.8618e-11 octave:15> mu=eig(A+E) mu = 9.1058358 2.1625348 0.0076256 0.7073072 octave:16> lambda lambda = 0.0076256 0.7073072 2.1625348 9.1058358 octave:17> [U,Lambda]=eig(A) U = -0.91636 0.19111 0.33721 0.10023 0.15872 -0.28913 0.76118 -0.55840 0.13514 -0.44837 0.38495 0.79531 0.34180 0.82392 0.39838 0.21360 Lambda = Diagonal Matrix 0.0076256 0 0 0 0 0.7073072 0 0 0 0 2.1625348 0 0 0 0 9.1058358 octave:18> A*U,U*Lambda ans = -0.0069878 0.1351765 0.7292196 0.9126998 0.0012104 -0.2045034 1.6460875 -5.0846861 0.0010305 -0.3171328 0.8324619 7.2419820 0.0026064 0.5827657 0.8615095 1.9449647 ans = -0.0069878 0.1351765 0.7292196 0.9126998 0.0012104 -0.2045034 1.6460875 -5.0846861 0.0010305 -0.3171328 0.8324619 7.2419820 0.0026064 0.5827657 0.8615095 1.9449647 octave:19> mu mu = 9.1058358 2.1625348 0.0076256 0.7073072 octave:20> lambda lambda = 0.0076256 0.7073072 2.1625348 9.1058358 octave:21> abs(lambda(4)-mu(1)) ans = 4.3064e-11 octave:22> cond(U)*norm(E) ans = 2.3788e-10 octave:23> cond(U) ans = 1.0000 octave:24> help potenze 'potenze' is a function from the file /home/accounts/personale/clrmrc90/aa1920/calcolo_numerico2/potenze.m [lambda, y, its, norm_r] = potenze (A, x0, tol, max_its) Additional help for built-in functions and operators is available in the online version of the manual. Use the command 'doc ' to search the manual index. Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org mailing list. octave:25> A = [-2, 1 ,0, 0;1, -2, 1, 0;0, 1, -2 ,1;0, 0, 0, 1]; octave:26> A A = -2 1 0 0 1 -2 1 0 0 1 -2 1 0 0 0 1 octave:27> lambda = potenze (A); octave:28> lambda lambda = -3.4142 octave:29> eig(A) ans = -3.41421 -2.00000 -0.58579 1.00000 octave:30> [lambda,y]=potenze(A); octave:31> A*y,lambda*y ans = 1.7071e+00 -2.4142e+00 1.7071e+00 1.5791e-10 ans = 1.7071e+00 -2.4142e+00 1.7071e+00 -5.3912e-10 octave:32> [lambda,y,its]=potenze(A); octave:33> its its = 26 octave:34> OP=@(x) A*x; octave:35> potenzeOP(OP,4) ans = -3.4142 octave:36> OP=@(x) A\x; octave:37> OP=@(x) inv(A)*x; % NOOOOOO octave:38> OP=@(x) A\x; % INSOMMMMMMMMA octave:39> potenzeOP(OP,4) ans = -1.7071 octave:40> eig(A) ans = -3.41421 -2.00000 -0.58579 1.00000 octave:41> 1/potenzeOP(OP,4) ans = -0.58579 octave:42> [L,U,P]=lu(A);OP=@(x) U\(L\(P*x)); % BEEEEEENE octave:43> 1/potenzeOP(OP,4) ans = -0.58579 octave:44> A = [1, 2; 2, 1]; octave:45> A A = 1 2 2 1 octave:46> qr_shift(A) its = 1 A = 2.60000 1.20000 1.20000 -0.60000 Invio per continuare, q per interrompere: its = 2 A = 2.95122 0.43902 0.43902 -0.95122 Invio per continuare, q per interrompere: its = 3 A = 2.99452 0.14795 0.14795 -0.99452 Invio per continuare, q per interrompere: its = 4 A = 2.999390 0.049375 0.049375 -0.999390 Invio per continuare, q per interrompere: its = 5 A = 2.999932 0.016461 0.016461 -0.999932 Invio per continuare, q per interrompere: its = 6 A = 2.9999925 0.0054870 0.0054870 -0.9999925 Invio per continuare, q per interrompere: its = 7 A = 2.9999992 0.0018290 0.0018290 -0.9999992 Invio per continuare, q per interrompere: its = 8 A = 3.0000e+00 6.0966e-04 6.0966e-04 -1.0000e+00 Invio per continuare, q per interrompere: its = 9 A = 3.0000e+00 2.0322e-04 2.0322e-04 -1.0000e+00 Invio per continuare, q per interrompere: its = 10 A = 3.0000e+00 6.7740e-05 6.7740e-05 -1.0000e+00 Invio per continuare, q per interrompere: its = 11 A = 3.0000e+00 2.2580e-05 2.2580e-05 -1.0000e+00 Invio per continuare, q per interrompere: its = 12 A = 3.0000e+00 7.5267e-06 7.5267e-06 -1.0000e+00 Invio per continuare, q per interrompere: its = 13 A = 3.0000e+00 2.5089e-06 2.5089e-06 -1.0000e+00 Invio per continuare, q per interrompere: its = 14 A = 3.00000 0.00000 0.00000 -1.00000 Invio per continuare, q per interrompere: q ans = 3.00000 0.00000 0.00000 -1.00000 octave:47> qr_shift(A) its = 1 A = 2.60000 1.20000 1.20000 -0.60000 Invio per continuare, q per interrompere: its = 2 A = 2.95122 0.43902 0.43902 -0.95122 Invio per continuare, q per interrompere: its = 3 A = 2.99452 0.14795 0.14795 -0.99452 Invio per continuare, q per interrompere: its = 4 A = 2.999390 0.049375 0.049375 -0.999390 Invio per continuare, q per interrompere: its = 5 A = 2.999932 0.016461 0.016461 -0.999932 Invio per continuare, q per interrompere: q ans = 2.999932 0.016461 0.016461 -0.999932 octave:48> A = [0, 0, 2; 1, 0, 1; 0, 1, 1]; octave:49> A A = 0 0 2 1 0 1 0 1 1 octave:50> qr_shift(A,0) its = 1 A = 0 1 -1 1 1 0 0 -2 0 Invio per continuare, q per interrompere: its = 2 A = 1.00000 -0.44721 -0.89443 -2.23607 0.40000 -0.20000 0.00000 0.80000 -0.40000 Invio per continuare, q per interrompere: its = 3 A = 1.50000 0.76376 -1.87083 0.76376 -0.21429 0.29161 0.00000 -0.93314 -0.28571 Invio per continuare, q per interrompere: its = 4 A = 1.76471 -1.45171 0.55476 -0.48862 -0.21398 -0.98420 0.00000 0.95608 -0.55072 Invio per continuare, q per interrompere: its = 5 A = 2.12281 -1.10179 0.26309 0.30030 -0.61086 0.89734 0.00000 -0.82456 -0.51195 Invio per continuare, q per interrompere: its = 6 A = 1.95802 -0.36362 -1.47096 -0.13161 -0.48198 -0.79680 0.00000 0.87126 -0.47603 Invio per continuare, q per interrompere: its = 7 A = 1.98018 1.12397 0.88087 0.06755 -0.47254 0.88763 0.00000 -0.87533 -0.50764 Invio per continuare, q per interrompere: its = 8 A = 2.01792 1.31010 0.43868 -0.03455 -0.51603 -0.87147 0.00000 0.86044 -0.50190 Invio per continuare, q per interrompere: its = 9 A = 1.99535 0.27981 -1.39938 0.01698 -0.49829 0.85754 0.00000 -0.86660 -0.49706 Invio per continuare, q per interrompere: its = 10 A = 1.99770 -1.07599 0.92024 -0.00852 -0.49672 -0.86883 0.00000 0.86716 -0.50097 Invio per continuare, q per interrompere: its = 11 A = 2.00227 -1.33308 0.45989 0.00427 -0.50203 0.86673 0.00000 -0.86532 -0.50024 Invio per continuare, q per interrompere: its = 12 A = 1.99943 -0.26884 -1.39007 -0.00213 -0.49980 -0.86497 0.00000 0.86610 -0.49963 Invio per continuare, q per interrompere: its = 13 A = 1.99971 1.06991 0.92512 0.00107 -0.49959 0.86638 0.00000 -0.86617 -0.50012 Invio per continuare, q per interrompere: its = 14 A = 2.00028 1.33590 0.46253 -0.00053 -0.50025 -0.86611 0.00000 0.86594 -0.50003 Invio per continuare, q per interrompere: its = 15 A = 1.99993 0.26746 -1.38890 0.00027 -0.49997 0.86589 0.00000 -0.86603 -0.49995 Invio per continuare, q per interrompere: its = 16 A = 1.99996 -1.06915 0.92573 -0.00013 -0.49995 -0.86607 0.00000 0.86604 -0.50002 Invio per continuare, q per interrompere: its = 17 A = 2.00004 -1.33626 0.46286 0.00007 -0.50003 0.86604 0.00000 -0.86601 -0.50000 Invio per continuare, q per interrompere: its = 18 A = 1.99999 -0.26729 -1.38875 -0.00003 -0.50000 -0.86601 0.00000 0.86603 -0.49999 Invio per continuare, q per interrompere: its = 19 A = 2.00000 1.06906 0.92581 0.00002 -0.49999 0.86603 0.00000 -0.86603 -0.50000 Invio per continuare, q per interrompere: its = 20 A = 2.00000 1.33630 0.46290 -0.00001 -0.50000 -0.86603 0.00000 0.86602 -0.50000 Invio per continuare, q per interrompere: q ans = 2.00000 1.33630 0.46290 -0.00001 -0.50000 -0.86603 0.00000 0.86602 -0.50000 octave:51> B=[-0.50000 -0.86603;0.86602 -0.50000] B = -0.50000 -0.86603 0.86602 -0.50000 octave:52> eig(B) ans = -0.50000 + 0.86602i -0.50000 - 0.86602i octave:53> A=[2,1;1,2] A = 2 1 1 2 octave:54> qr_shift(A,'auto') mu_n = 2 its = 1 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 2 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 3 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 4 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 5 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 6 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 7 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 8 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 9 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 10 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 11 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 12 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 13 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 14 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 15 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 16 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 17 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 18 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 19 A = 2 1 1 2 Invio per continuare, q per interrompere: mu_n = 2 its = 20 A = 2 1 1 2 Invio per continuare, q per interrompere: q ans = 2 1 1 2 octave:55> diary off