سؤال

لدي برنامج يستخدم جامع و تحتاج إلى اختبار مصفوفة يمكن أن تكون معكوسة.وأنا أعلم أنني يمكن أن انها مجرد محاولة اللحاق استثناء ولكن هذا يبدو وكأنه فكرة سيئة (وجود كتلة catch كجزء من "الطبيعي" مسار رمز يبدو أن شكل سيء).

اختبار أيضا إرجاع معكوس (أو تشغيل في وضع أفضل O() من عملية عكسية) سيكون من المفضل.

هل كانت مفيدة؟

المحلول

في عام، إذا لم تتمكن من حل مصفوفة، انها singluar (غير invertable). وأعتقد أن الطريقة التي JAMA يفعل ذلك هو محاولة حل المصفوفة باستخدام LU التعميل، وإذا فشلت، فإنها ترجع "صحيح" لisSingular ().

وليس هناك حقا وسيلة عامة لمجرد إلقاء نظرة على عناصر المصفوفة وتحديد ما إذا كان المفرد - تحتاج إلى التحقق من كل عمود لمعرفة ما إذا كان متعامد مع الآخرين (أي nullspace لمصفوفة هو 0). LU الى عوامل وسريع جدا، وعادة ... هناك أوقات حيث يأخذ الجزء الأكبر من هذه العملية، ولكن.

هل لديك مشكلة السرعة الفعلية التي تحاول التغلب عليها؟

نصائح أخرى

إذا تم طرح استثناء، ما هو موقف الشفاء؟

إذا قمت بذلك التحلل LU وجدوا أنه من المفرد، هل قبض على استثناء ومحاولة لSVD (تجزئ القيمة المنفردة) بدلا من ذلك؟

يبدو أنك ترغب في تقدير متبادل من شرط العدد.

هذا الموقع يبدو واعد إلى حد ما...

انظر أيضا غولوب ، فان القرض ، ص.128-130.(إذا كنت لا تملك نسخة منه ، الحصول على واحد.)

...أو Higham, من سلطة على الطرق العددية.إلا أنه من الصعب تحليل الرياضيات...مثل المشي من خلال غابة من شجيرات التوت.:/

أو ربما تحقق اوكتاف مصادر عن النسخة الخاصة من MATLAB هو rcond().وجدت هذا المنصب.

لمصفوفة مربعة، أنت يمكن أن تحقق فقط في المحدد --- <ل أ href = "http://math.nist.gov/javanumerics/jama/doc/Jama/Matrix.html#det ()" يختلط = "نوفولو noreferrer"> Matrix.det () بإرجاع صفر إذا وفقط إذا المصفوفة هي فريدة. بطبيعة الحال، سوف تحتاج إلى احترس من المصفوفات أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top