سؤال

وأريد أن عكس مصفوفة 4X4. يتم تخزين أرقامي في شكل النقطة الثابتة (1.15.16 ليكون بالضبط).

ومع الحساب الفاصلة العائمة وعادة ما مجرد بناء مصفوفة adjoint والقسمة المحدد (مثل القوة الغاشمة الحل). التي عملت بالنسبة لي حتى الآن، ولكن عند التعامل مع أرقام النقطة الثابتة أحصل على فقدان الدقة غير مقبولة بسبب كل من الضرب المستخدمة.

ملحوظة: في الحساب نقطة ثابتة I رمي دائما بعيدا بعض أقل بت كبيرة من النتائج الفورية

.

وهكذا - ما هي الطريقة الأكثر استقرارا العددية لعكس المصفوفة؟ لا مانع لدي الكثير عن الأداء، ولكن ببساطة الذهاب الى الفاصلة العائمة سيكون لإبطاء على العمارة هدفي.

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

المحلول

وأعتقد أن الإجابة على هذا تعتمد على النموذج المحدد من المصفوفة. وهناك طريقة التحلل القياسية (LU، QR، Cholesky الخ) مع التمحور (عنصرا أساسيا) جيدة إلى حد ما على نقطة ثابتة، وخاصة بالنسبة للمصفوفة 4X4 الصغيرة. انظر كتاب "وصفات العددية" من قبل الصحافة وآخرون. للحصول على وصف من هذه الأساليب.

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

نصائح أخرى

وميتا الجواب: هل هو حقا 4X4 المصفوفة العامة؟ إذا مصفوفة لديه شكل خاص، ثم هناك الصيغ المباشرة للقلب التي من شأنها أن تكون سريعة والحفاظ على العملية الخاصة بك العد التنازلي.

وعلى سبيل المثال، إذا كان معيار إحداثيات متجانسة تحويل من الرسومات، مثل:

[ux vx wx tx]
[uy vy wy ty]
[uz vz wz tz]
[ 0  0  0  1]

و(على افتراض تكوين التناوب، والحجم، ومصفوفات الترجمة)

وبعد ذلك هناك من يسهل مستقاة صيغة مباشرة ، وهو

[ux uy uz -dot(u,t)]
[vx vy vz -dot(v,t)]
[wx wy wz -dot(w,t)]
[ 0  0  0     1    ]

و(المصفوفات ASCII سرقت من الصفحة المرتبطة.)

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

إذا تأتي المصفوفة الخاصة بك من بعض المجال حيث كنت تعرف ان لديها أكثر هيكل، ثم هناك من المحتمل أن تكون إجابة سهلة.

وأود أن أثني على سؤال طرحه جيسون S: هل أنت متأكد أنك بحاجة إلى عكس المصفوفة الخاصة بك؟ هذا أمر ضروري تقريبا أبدا. ليس ذلك فحسب، بل هو في كثير من الأحيان فكرة سيئة. إذا كنت بحاجة إلى حل الفأس = ب، هو أكثر عدديا مستقر لحل النظام مباشرة من لمضاعفة ب التي كتبها A معكوس.

وحتى إذا كان لديك إلى حل الفأس = ب مرارا وتكرارا للقيم عديدة من ب، انها لا تزال ليست فكرة جيدة لعكس A. يمكنك <م> عامل A (قل LU الى عوامل أو Cholesky التعميل) وحفظ العوامل لذلك كنت لا الإعادة أن العمل في كل مرة، ولكن كنت لا تزال حل النظام في كل مرة باستخدام توكيل تجاري.

واسمحوا لي أن أطرح سؤالا آخر: هل تحتاج بالتأكيد لعكس المصفوفة (نسميها M)، أم أنك بحاجة إلى استخدام معكوس المصفوفة في حل المعادلات الأخرى؟ (مثل الإرسال المتعدد = ب لM المعروف، ب) في كثير من الأحيان هناك طرق أخرى للقيام بذلك ث / س الحاجة صراحة لحساب معكوس. أو إذا المصفوفة M هو وظيفة من الزمن ويتغير ببطء ثم هل يمكن حساب معكوس كاملة مرة واحدة، وهناك طرق متكررة لتحديثه.

لتقليل الأخطاء اقتطاع وغيرها من السوء، واستخدام "التمحور" - انظر الفصل على عكس المصفوفات في العددية وصفات. لديهم أفضل تفسير لقد وجدت حتى الآن.

وكنت قد تنظر مضاعفة الى 1.31 قبل القيام خوارزمية العادية. انها سوف يتضاعف عدد الضرب، ولكن كنت تفعل عكس المصفوفة وأي شيء تفعله هو الذهاب الى أن تكون مرتبطة جدا لالمضاعف في المعالج.

لأي شخص مهتم في العثور على معادلات لعكس 4X4، يمكنك استخدام حزمة الرياضيات رمزية لحلها بالنسبة لك. سوف TI-89 تفعل ذلك حتى، على الرغم من أنه سوف يستغرق عدة دقائق.

إذا كنت تعطينا فكرة عما يفعل عكس المصفوفة بالنسبة لك، ومدى تناسبها مع بقية معالجة الخاص بك ونحن قد تكون قادرة على اقتراح البدائل.

و-Adam

إذا تمثل مصفوفة لتحويل تآلفي (عدة مرات هذا هو الحال مع المصفوفات 4X4 طالما كنت لا إدخال عنصر القشور) معكوس هو مجرد تبديل الجزء 3X3 تناوب العلوي مع العمود الأخير انتفى. من الواضح إذا كنت تحتاج إلى حل المعمم ثم النظر في القضاء جاوس وربما أسهل.

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