Compare

Belirtilen hassasiyetle iki matrisin/vektörün elemanlarını karşılaştırır.

ulong vector::Compare(
  const vector& vec,         // karşılaştırılacak vektör
  const double  epsilon       // hassasiyet
   );
 
ulong matrix::Compare(
  const matrix& mat,          // karşılaştırılacak matris
  const double  epsilon       // hassasiyet
   );

Parametreler

vector_b

[in]  Karşılaştırılacak vektör.

epsilon

[in]  Hassasiyet.

Geri dönüş değeri

Karşılaştırılan matrislerin veya vektörlerin eşleşmeyen elemanlarının sayısı: matrisler eşitse 0, aksi takdirde 0'dan büyük olacaktır.

Karmaşık matrisler/vektörler için karşılaştırma, karmaşık sayılar arasındaki mesafenin tahmin edilmesini içerir. Mesafe sqrt(pow(r1-r2, 2) + pow(i1-i2, 2) olarak hesaplanır ve zaten epsilon ile karşılaştırılabilen reel bir sayıdır.

Not

== veya != karşılaştırma operatörleri, eleman bazında tam karşılaştırma yürütür. Reel sayıların tam karşılaştırmasının sınırlı kullanımı olduğu bilindiğinden, epsilon karşılaştırma yöntemi eklenmiştir. Bir matris, örneğin 1e-20 ila 1e+20 aralığında değerlere sahip elemanlar içerebilir. Bu tür matrisler, anlamlı basamak hassasiyetiyle eleman bazında karşılaştırma kullanılarak işlenebilir.

 

Örnek:

   matrix matrix_a={{10,3,2},{1,8,12},{6,5,4}};
   matrix matrix_i=matrix::Identity(3,3);
   matrix matrix_c=matrix_a.Inv();
   matrix matrix_check=matrix_a.MatMul(matrix_c);
   Print("matrix_check\n",matrix_check);
 
   ulong errors=matrix_check.Compare(matrix::Identity(3,3),1e-15);
   Print("errors=",errors);
 
 
  /*
  matrix_check
  [[1,0,0]
  [4.440892098500626e-16,1,8.881784197001252e-16]
  [4.440892098500626e-16,2.220446049250313e-16,0.9999999999999996]]
  errors=0
 
  */