Inv

Jordan-Gauss yöntemiyle tersinir kare matrisin çarpımsal tersini hesaplar.

matrix matrix::Inv()

Geri dönüş değeri

Matrisin çarpımsal tersi.

Not

Orijinal matrisin ve ters matrisin çarpımı birim matristir.

Matrisin en az bir satırı veya sütunu sıfırsa, ters matris elde edilemez.

Matrisin iki veya daha fazla satırı veya sütunu lineer bağımlıysa, yine ters matris elde edilemez.

 

Örnek:

int TestInverse(const int size_m)
  {
   int    i,j,errors=0;
   matrix matrix_a(size_m,size_m);
//--- kare matrisi doldur
   MatrixTestFirst(matrix_a);
//--- mikrosaniye ölç
   ulong t1=GetMicrosecondCount();
//--- ters matrisi al
   matrix inverse=matrix_a.Inv();
//--- ölç
   ulong t2=GetMicrosecondCount();
//--- doğruluğu kontrol et
   matrix identity=matrix_a.MatMul(inverse);
//---
   for(i=0i<size_mi++)
     {
      for(j=0j<size_mj++)
        {
         double value;
         //--- köşegen boyunca 1'ler olmalıdır
         if(i==j)
            value=1.0;
         else
            value=0.0;
         if(MathClassify(identity[i][j])>FP_ZERO)
            errors++;
         else
           {
            if(identity[i][j]!=value)
              {
               double diff=MathAbs(identity[i][j]-value);
               //--- çok fazla çarpma ve bölme, bu nedenle kontrol hassasiyetini azalt
               if(diff>1e-9)
                  errors++;
              }
           }
        }
     }
//---
   double elapsed_time=double(t2-t1)/1000.0;
   printf("Inversion of matrix %d x %d  %s  errors=%d  time=%.3f ms",size_m,size_m,errors==0?"passed":"failed",errors,elapsed_time);
   return(errors);
  }