Scilab Function
Last update : 00/00/0000

diag - extraction de diagonale ou construction d'une matrice à partir d'une diagonale.

### Calling Sequence

  `[y]=diag(vm, [k])`

### Parameters

- `vm` : vecteur ou matrice (stockage plein ou creux)
- `k` : entier (valeur par défaut 0)
- `y` : vecteur ou matrice

### Description

Pour `vm` un n-vecteur (ligne ou colonne) `diag(vm)` renvoie une matrice diagonale avec les composantes de `vm` sur la diagonale principale.

`diag(vm,k)` est une matrice `(n+abs(k))x(n+abs(k))` avec les composantes de `vm` sur la kième diagonale. `k=0` correspond à la diagonale principale `k>0` correspond aux diagonales supérieures et `k<0` aux diagonales inférieures.

Pour une matrice `vm`, `diag(vm,k)` est le vecteur colonne dont les composantes sont les termes de la kième diagonale de `vm`. `diag(vm)` est la diagonale principale de `vm`. `diag(diag(x))` est une matrice diagonale.

Si `vm` est une matrice creuse `diag(vm,k)` renvoie une matrice creuse.

Pour construire un système linéaire diagonal, utilisez `sysdiag`.

Notez que `eye(A).*A` renvoie une matrice diagonale avec les termes diagonaux de `A`. Ceci est valide pour tout type de matrice (constante, polynomiale, rationnelle, système dynamique linéaire, ...).

### Examples

    diag([1,2])

    A=[1,2;3,4];
    diag(A)  // diagonale principale
    diag(A,1)

    diag(sparse(1:10))  // matrice diagonale creuse

    // Construction d'une matrice tridiagonale de taille 2*m+1
    m=5;diag(-m:m) +  diag(ones(2*m,1),1) +diag(ones(2*m,1),-1)

### See Also

`sysdiag`, `sparse`,