Cours du 20 marsJe peux aussi utiliser les zones texte de Maple. On verra \303\240 l'usage
Si vous avez des questions sur la syntaxe Maple, vous pouvez les poser dans le chat.Avec ';' le r\303\251sultat de la commande (= la liste des fonctions export\303\251es) s'affiche.
Je retire le ';' et je mets un ':'with(LinearAlgebra):CTRL-T pour switcher vers le mode texte en MapleJe triche. Je pars de L, U et x et je construis un exemple.L, U, x := < <1,3> | <0,1> >, < <-2,0> | <3,-4> >, <4, 5>;Je construis maintenant A et bA := L . U;b := A . x;\303\200 vous, r\303\251solvez \303\240 la main le syst\303\250me A . x = b en passant par la r\303\251solution de deux syst\303\250mes triangulaires. Vous devriez retrouver x. Je le fais en m\303\252me temps que vous pour estimer le temps qu'il vous fautOn commence par r\303\251soudre L . y = b. J'utilise LinearSolve mais ce serait en fait l'algo de descente qu'il afudrait utilisery := LinearSolve (L, b);On v\303\251rifieL . y;Maintenant qu'on a y, on r\303\251sout U .x = y. On utilise une remont\303\251e.x := LinearSolve (U, y);On a bien retrouv\303\251 x. Je retourne au chat.Transpos\303\251e, matrices sym\303\251triquesUne matrice quelconque (remarquer que Maple est capable de traiter des expressions avec des param\303\250tres).A := <<1,4,2,a> | <-3,1,5,7> | <0,2,1,1>>;Transpose (A);"dim A =", Dimension(A);"dim A^T =", Dimension(Transpose(A));Regardez : le produit A . A^T et le produit A^t . A donnent des matrices sym\303\251triques.
On observe au passage que le produit n'est pas commutatifA . Transpose (A);Transpose (A) . A;Je retourne au chat.On v\303\251rifie sur un exemple que (A . B)^T = B^T . A^T (et que la formule est fausse si on change l'ordre). Je prends une matrice 4 x 3 pour A.A := <<1,4,2,6> | <-3,1,5,7> | <0,2,1,1>>;Je prends une matrice 3 x 2 pour BB := <<2,6,-5> | <3,1,8>>;Transpose (A . B);On doit retrouver la matrice ci-dessus. Je teste la formule du cours. \303\207a marcheTranspose (B) . Transpose (A);Je teste dans l'autre sens. La multiplication n'est m\303\252me pas d\303\251finie (c'est un probl\303\250me de dimensions incompatibles). M\303\252me si on prenait un exemple o\303\271 la multiplication est d\303\251finie, sauf cas particulier, on aurait un r\303\251sultat diff\303\251rent du r\303\251sultat attendu.Transpose (A) . Transpose (B);On retourne au 'chat'Algorithme de CholeskyJe refais avec l'interface graphique l'exemple que j'avais fait en mode texte
Je pars d'une matrice 3 x 3 sym\303\251trique (appelons-la A). Il faut qu'elle soit sym\303\251trique.
1. si A est (je n'explique pas) d\303\251finie positive, l'algo calcule une matrice L (triangulaire inf\303\251rieure) telle que A = L . L^T (comme la transpos\303\251e d'une matrice L est une matrice U, on a un cas particulier de factorisation A = L . U)
2. si A n'est pas d\303\251finie positive, l'algo \303\251choue.A1 := <<4,6,-10> | <6,25,-47> | <-10,-47,125>>;Premi\303\250re it\303\251ration
On renomme certains blocs de A1alpha1 := A1[1,1];a1 := A1 [2..3,1];M1 := A1 [2..3,2..3];L'extraction de la racine carr\303\251e est le seul passage qui puisse \303\251chouer beta1 := sqrt(alpha1);b1 := (1/beta1) * a1;On calule une matrice A2 par la formule suivante
A2 = M1 - b1 . b1^T
Attention :
1. comme les vecteurs sont (pour nous) toujours des vecteurs colonne, b^T . b est un scalaire
2. mais b . b^T est une matrice. Avec des mots sophistiqu\303\251s, c'est un cas particulier de produit tensoriel.
L'expression 'tensoriel' se retrouve dans 'tensor flow' (intelligence artificielle etc.).
Le produit tensoriel se retrouve dans plein d'algos.Transpose (b1) . b1, "vs", b1 . Transpose (b1);Deuxi\303\250me it\303\251rationA2 := M1 - b1 . Transpose(b1);alpha2 := A2[1,1];a2 := A2[2..2,1];M2 := A2[2..2,2..2];beta2 := sqrt(alpha2);b2 := (1/beta2)*a2;A3 := M2 - b2 . Transpose(b2);Troisi\303\250me it\303\251rationalpha3 := A3[1,1];beta3 := sqrt(alpha3);Synth\303\250se et v\303\251rificationL := <<beta1, b1> | <0, beta2, b2> | <0, 0, beta3>>;L . Transpose (L);