pinv تقطع القيم المفردة عند أو دون rcond×أكبر قيمة مفردة. [1]
حدد حد القطع قبل قراءة الخرج
pinv تقطع القيم المفردة عند أو دون rcond×أكبر قيمة مفردة. [1]
تستخدم pinv تحليل القيم المفردة؛ وبناؤها يستعمل مقلوبات القيم المحتفظ بها. [1]
نثبت المدخل ونغير حدًا صريحًا. سنقارن الخرج بحاصل ضرب ثلاثي محدد، لا بظهور اسم شبه المعكوس على الدالة وحده.
أعداد المثال مؤلفة، وليست قياسات لاختيار حد مناسب لتطبيق. نحن نفحص أثر حذف اتجاه غير صفري على إعادة المدخل نفسه.
مدخل قابل للعكس وخرج مقطوع
في تشغيلنا A=diag(8,1) مع rcond=1/8 أعطت G=diag(1/8,0)، ثم AGA=diag(8,0)، مختلفًا عن A.
المدخل A قابل للعكس في هذا المثال؛ الصفر في G نتج من القطع، ولم تكن الخانة الثانية في A صفرًا.
import numpy as np A=np.array([[8.,0.],[0.,1.]],dtype=np.float64) G=np.linalg.pinv(A,rcond=0.125) AG=A@G AGA=AG@A
كان شكل A وG هو (2,2)، ونوعهما float64 على NumPy 2.3.5 وCPython 3.12.14. بقيت بايتات A كما كانت. حصلنا على AG=diag(1,0)، وAGA=diag(8,0).
AᵀA=diag(64,1)؛ جذور القيم الذاتية تعطي القيم المفردة 8 و1. [2] حد المثال1، فتُقطع القيمة1 عند المساواة. [1]
توجد للمصفوفة الأصلية صورة عكسية دقيقة H=diag(1/8,1)، لأن AH=HA=diag(1,1). أما G فتضرب المتجه (0,1) في الصفر. الاختلاف بين H وG هنا نتيجة أعداد وحد معلنين.
الخانة الثانية في AGA هي 0 بدل1. إذن فشل إعادة A ليس مقارنةً بين عددين قريبين تحت سماحية اخترناها؛ القيم المختارة وحواصل ضربها في هذه التجربة من قوى اثنين ممثلة بدقة.
فحوص أخرى قد تنجح مع فقد الاتجاه
في الأعداد نفسها، GAG=G وAG وGA متناظران؛ هذه الفحوص لا تعوّض فشل AGA=A.
GA=diag(1,0) أيضًا. المنقول لا يغير هذا القطر، فيكون كل من AG وGA متناظرًا. كذلك GAG=diag((1/8)×8×(1/8),0)=diag(1/8,0)=G.
هذه ثلاث علاقات ناجحة في المثال، ومعها العلاقة AGA=A فاشلة. لا تكفي مراجعة GAG أو تناظر حاصلين وحدهما لإثبات إعادة المدخل الأصلي.
إذا سمينا T=diag(8,0)، نجد TGT=T وGTG=G، والحاصلان TG وGT هما diag(1,0). تنجح العلاقات مع هذا المدخل المختلف، الذي حذفنا منه الخانة الثانية صراحةً.
T لا يساوي A؛ لذلك لا نستبدل اسم المدخل في سجل التحقق صامتًا. يمكن أن يبدو الخرج متسقًا مع مصفوفة مقطوعة، بينما السؤال الذي بدأنا به كان عن المصفوفة الأصلية.

تحكم يعيد الاتجاه وحدود الشبكة
تحكم: خفض rcond إلى 1/16 أبقى الاتجاهين وأعاد AGA=A؛ كذلك أعاد الافتراضي وrcond=0 الأصل في هذا التشغيل.
K=np.linalg.pinv(A,rcond=0.0625) KAK=K@A@K AKA=A@K@A D=np.linalg.pinv(A) Z=np.linalg.pinv(A,rcond=0.)
عند نصف الحد السابق صار القطع (1/16)×8=1/2. القيمة1 أكبر منه، فبقيت في هذا المثال. أعادت K القطر 1/8 و1، وأعاد AKA القطر8 و1. بقي A دون تعديل.
كذلك أعاد D وZ القطر 1/8 و1، وأعاد حاصل الضرب الثلاثي الأصل مع كل منهما. نقل هذه النتائج عن المدخل المحدد لا يثبت أن الحد صفر مناسب لجميع المصفوفات أو لجميع الحسابات.
بنى الفحص المتوقع بكسور Fraction من القطر والحد: يحتفظ بالقيمة التي تتجاوز الحد، ثم يأخذ مقلوبها؛ وإلا يضع صفرًا. حسب كذلك حواصل الضرب القطرية مستقلاً، دون pinv أو SVD لصنع المتوقع.
الشبكة 63 حالة: الخانة الكبرى من2 و8 و32، والصغرى من1/4 و1 و2، وrcond من0 و1/64 و1/16 و1/8 و1/4 و1/2 و1. أضفنا الرئيسي وتحكم نصف الحد، وأربعة فحوص للافتراضي والصفر؛ مرت524 مقارنة.
المقارنات دقيقة لهذا النطاق من قوى اثنين، وتشمل قيم G وAG وGA وAGA وGAG والأنواع والأشكال والتناظر وثبات المدخل. لم نفحص مداخل مستطيلة أو غير قطرية أو مركبة أو دفعات، ولم نغير hermitian أو rtol أو نستخدم حدًا سالبًا، ولم نقرر ضمانًا عامًا للدقة أو الأداء.
| rcond | G قطريًا | AGA قطريًا | إعادة A |
|---|---|---|---|
| 1/8 | 1/8 و0 | 8 و0 | لا |
| 1/16 | 1/8 و1 | 8 و1 | نعم |
| افتراضي أو0 | 1/8 و1 | 8 و1 | نعم |
للتوسع: أنواع المصفوفات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
