Diag

Extrait une diagonale ou construire une matrice diagonale.

vector matrix::Diag(
  const int     ndiag=0      // nombre de diagonales
   );
 
void matrix::Diag(
  const vector  v,           // vecteur diagonal
  const int     ndiag=0      // nombre de diagonales
   );

Paramètres

v

[in] Un vecteur dont les éléments seront contenus dans la diagonale correspondante (ndiag=0 est la diagonale principale).

ndiag=0

[in]  Diagonale en question. La valeur par défaut est 0. Utilisez ndiag>0 pour les diagonales au-dessus de la diagonale principale et ndiag<0 pour les diagonales en dessous de la diagonale principale.

 

Note

Une diagonale peut être définie pour les matrices non allouées (qui n'ont pas de dimensions). Dans ce cas, une matrice nulle de la taille sera créée avec la taille correspondant à la taille du vecteur diagonal, après quoi les valeurs vectorielles seront renseignées dans la diagonale correspondante. Si la diagonale est définie sur une matrice déjà existante, les dimensions de la matrice ne changent pas et les valeurs des éléments de la matrice en dehors du vecteur diagonal ne changent pas.

Exemple

   vector v1={1,2,3};
   matrix m1;
   m1.Diag(v1);
   Print("m1\n",m1);
   matrix m2;
   m2.Diag(v1,-1);
   Print("m2\n",m2);
   matrix m3;
   m3.Diag(v1,1);
   Print("m3\n",m3);
   matrix m4=matrix::Full(4,5,9);
   m4.Diag(v1,1);
   Print("m4\n",m4);
   
   Print("diag -1 - ",m4.Diag(-1));
   Print("diag 0 - ",m4.Diag());
   Print("diag 1 - ",m4.Diag(1));
 
  /*
 
  m1
  [[1,0,0]
  [0,2,0]
  [0,0,3]]
  m2
  [[0,0,0]
  [1,0,0]
  [0,2,0]
  [0,0,3]]
  m3
  [[0,1,0,0]
  [0,0,2,0]
  [0,0,0,3]]
  m4
  [[9,1,9,9,9]
  [9,9,2,9,9]
  [9,9,9,3,9]
  [9,9,9,9,9]]
  diag -1 - [9,9,9]
  diag 0 - [9,9,9,9]
  diag 1 - [1,2,3,9]
  */