Diag

Bir köşegeni çıkarır veya bir köşegen matris oluşturur.

vector matrix::Diag(
  const int     ndiag=0      // köşegenin indeksi
   );
 
void matrix::Diag(
  const vector  v,           // köşegene yazılacak vektör
  const int     ndiag=0      // köşegenin indeksi
   );

Parametreler

v

[in] Elemanları ilgili köşegene (ndiag=0 ana köşegendir) yazılacak vektör.

ndiag=0

[in]  Köşegenin indeksi: ndiag=0 (varsayılan) ana köşegeni, ndiag>0 ana köşegenin üzerindeki köşegenleri ve ndiag<0 ana köşegenin altındaki köşegenleri ifade eder.

 

Not

Büyüklüğü belirlenmemiş matrisler için köşegen ayarlanabilir. Bu durumda, köşegene yazılacak vektörün büyüklüğünde bir sıfır matrisi oluşturulacak ve vektör elemanları ilgili köşegene doldurulacaktır. Köşegen halihazırda mevcut olan bir matrise ayarlanırsa, matrisin büyüklüğü ve köşegene yazılacak vektör dışındaki elemanları değişmez.

Örnek:

   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]
  */