// // Per poter utilizzare con il file xt2(usafiledati).xhtml questo file di // dati, bisogna dargli il nome: // xt2(matricestudiata).txt // //<![CDATA[ // var esempi = new Array(11); // // Esempio studiato per far bloccare la tridiagonalizzazione al terzo passo. // Questo esempio (come gli altri) può venire modificato dalla function ultimicalcoli. // esempi[0] = [ [ 1, -1.6, -1.2, 0, 0, 0], [-0.64, -1.1264, -0.7648, -4.2896, 7.1328, 0.36], [-2.48, 3.2352, 1.4864, 8.6528, -7.3104, -0.48], [-0.96, -1.5856, 1.3808, 7.5216, -6.7088, 2.44], [-0.72, 0.8608, 0.3856, 5.0912, -3.8816, -1.92], [ 0, 0.36, -0.48, 1.24, -0.32, 3] ]; // // Copia identica alla precedente tenuta di riserva... // esempi[1] = [ [ 1, -1.6, -1.2, 0, 0, 0], [-0.64, -1.1264, -0.7648, -4.2896, 7.1328, 0.36], [-2.48, 3.2352, 1.4864, 8.6528, -7.3104, -0.48], [-0.96, -1.5856, 1.3808, 7.5216, -6.7088, 2.44], [-0.72, 0.8608, 0.3856, 5.0912, -3.8816, -1.92], [ 0, 0.36, -0.48, 1.24, -0.32, 3] ]; // // Altro esempio studiato per far bloccare la tridiagonalizzazione al terzo passo. // esempi[2] = [ [ 1, -2, 0, 0, 0, 0], [ -2, 1, 0.4, 2.2, 0, 0], [ 1.6, -3.6, -0.64, -1.52, -13.8, 0.6], [-1.2, 0.2, -1.52, 2.64, 11.6, 0.8], [ 0, -1, -1.4, -0.2, 1, 3], [ 0, 0, 0.6, 0.8, 1, 3]]; // // Altro esempio studiato per far bloccare la tridiagonalizzazione al terzo passo. // esempi[3] =[ [ 1, -2, 0, 0, 0], [-2, 2, 1, 2, 0], [ 0, 3, 1, 0, 18], [ 0, 0, 2, 0, 1], [ 0, 0, 1, -1, 1]]; // // Altro esempio studiato per far bloccare la tridiagonalizzazione al terzo passo. // esempi[4] =[ [ 1, -2, 0, 0, 0, 0], [-2, 1, 1, 2, 0, 0], [-2, 3, 2, 2, 18, 0], [ 0, -2, 2, 0, 1, 1], [ 0, -1, 1, -1, 1, 3], [ 0, 0, 0, 1, 1, 3] ]; // esempi[5] =[ [2.5, 3, 1, 2, 5,-2], [ 3,-1,-5, 1, 2, 1], [ 1, 5, 3, 1, 2, 1], [ 2, 1,-1,-3,-3, 1], [ 5, 4, 2,-3, 0, 2], [ 5, 1, 3, 1, 1,-1]]; // // Un esempio quasi simmetrico ... // esempi[6] =[ [ 3, 2, 1, 8.0000000000001], [ 2,-1, 4, 1], [ 1, 4, 2, 3], [ 8, 1, 3,-2] ]; // esempi[7] = [ [ 1, 1, 0, 1, 0 ], [ 0, 3, 2, 0, 0 ], [-1,-2, 1, 2, 1 ], [ 0, 0,-2, 5, 2 ], [-3, 0, 0,-2, 1 ]]; // esempi[8] = [ [ 1, 1, 1, 1 ], [ 1, 2, 3, 4 ], [ 1, 3, 6, 10], [ 1, 4,10, 20]]; // // Attenzione: il Durand (Solutions numériques des équations algébriques, Tome II), // sostiene, a pag. 302, esercizio 3, che gli autovalori della seguente matrice // sono 1, 1, 2, 2 mentre l'algoritmo QR da' la seconda coppia complessa coniugata... // Chi ha ragione ? // esempi[9] = [ [ -9, -8, -5, -2], [ 40, 31, 18, -7], [-50,-36,-20, -8], [ 20, 14, 8, 4]]; // esempi[10] = [ [ 9, -8, -11, 8], [ 1, -1, -5, 1], [ 6, 5, 9, 6], [ 8, 8, 11, 9]]; // // Questa è una matrice che dà risultati sorprendenti. Potrebbe essere interpretata // come la matrice della discretizzazione di un laplaciano bidimensionale con // condizioni al contorno di riflessione perfetta. L'autovalore più piccolo // deve valere 0 e il corrispondente autovettore ha tutti gli elementi uguali. // La cosa strana è che la tridiagonalizzazione provoca la suddivisione della // matrice in due blocchi indipendenti ! // Notare che la matrice è simmetrica e dunque non c'é bisogno del mio metodo // necessario per tridiagonalizzare matrici non simmetriche. // Dato però che la matrice è partizionabile, il mio algoritmo, al passo 9 // segnala che non può applicare la trasformazione "delicata" perché // il parametro di trasformazione sarebbe infinito. Naturalmente tutto poi // procede bene perché appunto la matrice è simmetrica e dunque la // tridiagonalizzazione è garantita per ragioni di simmetria. // esempi[11]= [ [ 2, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, 3, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, -1, 3, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, -1, 2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0], [-1, 0, 0, 0, 3, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0], [ 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0], [ 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0, 0, 0, 0], [ 0, 0, 0, -1, 0, 0, -1, 3, 0, 0, 0, -1, 0, 0, 0, 0], [ 0, 0, 0, 0, -1, 0, 0, 0, 3, -1, 0, 0, -1, 0, 0, 0], [ 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0, 0], [ 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 4, -1, 0, 0, -1, 0], [ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 3, 0, 0, 0, -1], [ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 2, -1, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 3, -1, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 3, -1], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 2]]; // ______________________________________________________________________________ // // Prima di iniziare i test viene chiamata la function ultimicalcoli che effettua // gli ultimi aggiustamenti delle matrici di esempio: // // function ultimicalcoli(){ var nn,xx,aa,bb,ax,uax,serve; xx=confirm("Vuoi modificare l'esempio "+nes+" ? Schiaccia O.K."); if(xx) { nn=esempi[nes].length; aa=new ARMA(nn,nn); bb=new ARMA(nn,nn); // e' una matrice di servizio di tipo ARMA ax = new VDV(nn); uax = new VDV(nn); serve= new VDV(nn); davetdivet(aa,ax.m); clip_inversa(aa,bb); invetdivet(aa,uax.m); mprodotto(esempi[nes],ax.m,serve.m,1); mprodotto(uax.m,esempi[nes],serve.m,2); } } // ______________________________________________________________________________ // // ]]> //