### 6.45.5 Matrice triangulaire inférieure ou supérieure associée à une matrice : `diag`

`diag` peut avoir 1 ,2 ou 3 arguments.

1. Avec 1 argument qui est soit une liste soit une matrice
   - une liste `l`, `diag(l)` renvoie la matrice diagonale de diagonale `l`.
     On tape :
     `diag([1,4])`
     On obtient :
     `[[1,0],[0,4]]`
   - une matrice `A`, `diag(A)` renvoie la diagonale de `A`.
     On tape :
     `diag([[1,2],[3,4]])`
     On obtient :
     `[1,4]`
2. Avec 2 arguments qui sont une matrice et une option
   - `diag(A,left)` renvoie la matrice triangulaire inférieure `L` formée par la partie gauche large de `A` (`L[j,k]=0` si `k>j` et `L[j,k]=A[j,k]` si `k<=j`).
     On tape :
     `diag([[1,2],[3,4]],left)`
     On obtient :
     `[[1,0],[3,4]]`
     On tape :
     `diag([[1,2,3],[4,5,6],[7,8,9]],left)`
     On obtient :
     `[[1,0,0],[4,5,0],[7,8,9]]`
   - `diag(A,right)` renvoie la matrice triangulaire supérieure `U` formée par la partie droite large de `A` (`L[j,k]=0` si `k<j` et `L[j,k]=A[j,k]` si `k>=j`).
     On tape :
     `diag([[1,2],[3,4]],right)`
     On obtient :
     `[[1,2],[0,4]]`
     On tape :
     `diag([[1,2,3],[4,5,6],[7,8,9]],right)`
     On obtient :
     `[[1,2,3],[0,5,6],[0,0,9]]`
   - `diag(A,lu)` renvoie 3 parties de `A` : la partie gauche stricte, la diagonale et la partie droite stricte. On tape :
     `diag([[1,2],[3,4]],lu)`
     On obtient :
     `[[0,0],[3,0]],[1,4],[[0,2],[0,0]]`
     On tape :
     `diag([[1,2,3],[4,5,6],[7,8,9]],lu)`
     On obtient :
     `[[0,0,0],[4,0,0],[7,8,0]],[1,5,9],[[0,2,3],[0,0,6],[0,0,0]]`
3. Avec 3 arguments qui sont 3 listes de dimension `n-1`, `n` et `n-1`
   `diag(l,d,u)` renvoie la matrice tridiagonale de dimension `[n,n]` et de diagonales principales `l,d,u`.
   On tape :
   `diag([1,2],[3,4,5],[6,7]])`
   On obtient :
   `[[3,6,0],[1,4,7],[0,2,5]]`
   On tape :
   `diag([1,2,3],[4,5,6,7],[8,9,10]])`
   On obtient :
   `[[4,8,0,0],[1,5,9,0],[0,2,6,10],[0,0,3,7]]`