مكتبة مصفوفات جافا فعالة

مكتبة EJML (مكتبة المصفوفات الفعالة في جافا ) هي مكتبة جبر خطي لمعالجة المصفوفات الحقيقية/المركبة/الكثيفة/المتفرقة. تهدف المكتبة إلى تحقيق هدفين رئيسيين: 1) أن تكون فعالة قدر الإمكان من حيث الحساب والذاكرة، سواءً للمصفوفات الصغيرة أو الكبيرة، و2) أن تكون سهلة الاستخدام للمبتدئين والخبراء على حد سواء. يتحقق هذان الهدفان من خلال الاختيار الديناميكي لأفضل الخوارزميات المستخدمة أثناء التشغيل، وواجهة برمجة تطبيقات (API) سهلة الاستخدام، وواجهات متعددة. مكتبة EJML مجانية، ومكتوبة بالكامل بلغة جافا، ومرخصة بموجب رخصة أباتشي الإصدار 2.0.

تتيح لغة EJML ثلاث طرق متميزة للتفاعل معها: 1) الإجرائية، 2) المصفوفات البسيطة، و3) المعادلات. يوفر النمط الإجرائي جميع إمكانيات EJML، بالإضافة إلى تحكم شبه كامل في إنشاء المصفوفات وسرعتها وخوارزمياتها. أما نمط المصفوفات البسيطة، فيوفر مجموعة فرعية مبسطة من الإمكانيات الأساسية ضمن واجهة برمجة تطبيقات سهلة الاستخدام، تعتمد على البرمجة الكائنية، ومستوحاة من JAMA . بينما يوفر نمط المعادلات واجهة رمزية، مشابهة في جوهرها لـ Matlab وأنظمة الجبر الحاسوبي الأخرى، مما يتيح طريقة مختصرة لكتابة المعادلات. [ 1 ]

القدرات

توفر لغة EJML الإمكانيات التالية للمصفوفات الكثيفة.

  • العمليات الحسابية الأساسية (الجمع، الضرب، ... )
  • معالجة المصفوفات (استخراج، إدراج، دمج، ... )
  • حلول المعادلات الخطية (الخطية، المربعات الصغرى، التزايدية، ...)
  • التحليلات (LU، QR، Cholesky، SVD، القيم الذاتية، ...)
  • خصائص المصفوفة (الرتبة، التناظر، التحديد، ... )
  • المصفوفات العشوائية (التغاير، المتعامدة، المتناظرة، ... )
  • تنسيقات داخلية مختلفة (صفوف رئيسية، كتل)
  • اختبار الوحدة

أمثلة على الاستخدام

أسلوب المعادلة

حساب كسب كالمان :

eq.process ( "K = P*H'*inv(H*P*H' + R) " ) ;

الأسلوب الإجرائي

حساب كسب كالمان:

mult ( H , P , c ); multTransB ( c , H , S ); addEquals ( S , R ); if ( ! invert ( S , S_inv )) throw new RuntimeException ( "فشلت عملية العكس" ); multTransA ( H , S_inv , d ); mult ( P , d , K );

نمط SimpleMatrix

مثال على تحليل القيم المفردة (SVD):

SimpleSVD s = matA.svd ( ) ; SimpleMatrix U = s.getU ( ) ; SimpleMatrix W = s.getW ( ) ; SimpleMatrix V = s.getV ( ) ;

مثال على ضرب المصفوفات:

نتيجة SimpleMatrix = matA . متعدد ( ماتب );

مصنع التحلل

استخدام DecompositionFactory لحساب تحليل القيم المفردة باستخدام مصفوفة رئيسية مزدوجة الصفوف كثيفة (DDRM): [ 2 ]

SingularValueDecomposition_F64 < DenseMatrix64F > svd = DecompositionFactory_DDRM . svd ( true , true , true );إذا لم تنجح عملية التفكيك الآمن ( DecompositionFactory.decomposeSafe ( svd , matA ))، فسيتم طرح استثناء DetectedException ( "فشلت عملية التفكيك." ).DenseMatrix64F U = svd . getU ( فارغة ، كاذبة DenseMatrix64F S = svd . getW ( فارغة DenseMatrix64F V = svd . getV ( فارغة ، كاذبة 

مثال على ضرب المصفوفات:

CommonOps_DDRM . mult ( matA , matB , result );

انظر أيضاً

مراجع

  1. "صفحة مشروع EJML" . EJML . بيتر أبيلز . تم الاطلاع عليه بتاريخ 21 يناير 2019 .
  2. "تحليل المصفوفات - مكتبة جافا فعالة للمصفوفات" . ejml.org . تم الاطلاع عليه بتاريخ 24-04-2021 .