pinv تحسب شبه المعكوس. [1] لا تصح قاعدة عكس العوامل له عمومًا. [2] نختبر حاصل مصفوفتين.
افحص هوية التركيب
pinv تحسب شبه المعكوس. [1] لا تصح قاعدة عكس العوامل له عمومًا. [2] نختبر حاصل مصفوفتين.
شروط الحالة الحقيقية: CGC=C، وGCG=G، وتناظر CG وGC؛ تحدد شبه المعكوس وحده. [2]
نستعمل الرمز ⁺ لشبه المعكوس، والرمز @ لضرب المصفوفات. نسأل هل يمكن حساب A⁺ وB⁺ منفصلين ثم ضرب B⁺A⁺ للحصول على (AB)⁺.
نثبت rcond=10⁻¹² في الاستدعاءات الثلاثة ونستخدم مصفوفتين دقيقتي الرتبة الواحدة. لا نغير عتبة عددية لقطع اتجاه غير صفري؛ سنقارن التركيب بمرجع جبري مستقل لكل عامل وللحاصل.
قبول أبعاد الضرب لا يكفي لإثبات الهوية. كل المصفوفات في المثال 2×2، وحاصل شبه المعكوسين موجود، لكن عليه أن يحقق شروط المصفوفة C الأصلية.
عاملان صحيحان وحاصل مختلف
على NumPy 2.3.5 وCPython 3.12.14، نختار A=[[1,2],[0,0]] وB=[[1,0],[3,0]] من float64. حاصل C=A@B هو diag(7,0)، وشبه معكوسه G=diag(1/7,0).
import numpy as np A=np.array([[1.,2.],[0.,0.]],dtype=np.float64) B=np.array([[1.,0.],[3.,0.]],dtype=np.float64) C=A@B Ap=np.linalg.pinv(A,rcond=1e-12) Bp=np.linalg.pinv(B,rcond=1e-12) G=np.linalg.pinv(C,rcond=1e-12) X=Bp@Ap print(C,G,X)
حساب كل عامل منفصلًا يعطي A⁺=[[1/5,0],[2/5,0]] وB⁺=[[1/10,3/10],[0,0]]. لذلك X=B⁺A⁺=diag(7/50,0)، مختلف عن G بفارق 1/350 في الخانة الأولى.
الضرب اليدوي يوضح C: الخانة الأولى 1×1+2×3=7، والثانية صفر؛ صف A الثاني صف أصفار، فيبقى صف C الثاني كذلك. المصفوفتان A وB غير قابلتين للعكس العادي في هذا المثال.
نثبت قيمة A⁺ بدل أخذها من تشغيل آخر. حاصل AA⁺=[[1,0],[0,0]]، وحاصل A⁺A=[[1/5,2/5],[2/5,4/5]]. كلاهما متناظر؛ وضرب AA⁺ في A يعيد A، وضرب A⁺A في A⁺ يعيد A⁺.
وبالمثل BB⁺=[[1/10,3/10],[3/10,9/10]]، وB⁺B=[[1,0],[0,0]]. الحاصلان متناظران، وBB⁺B=B، وB⁺BB⁺=B⁺. إذن المشكلة ليست أننا أعطينا أحد العاملين مرشحًا خاطئًا.
في C، اختيار G=diag(1/7,0) يعطي CG=GC=diag(1,0)، ثم CGC=C وGCG=G. بهذه الحسابات نحدد شبه معكوس الحاصل نفسه.
أما أول خانة من B⁺A⁺ فهي (1/10)(1/5)+(3/10)(2/5)=1/50+6/50=7/50. الفرق 1/7−7/50=(50−49)/350=1/350، غير صفري.
سجل التشغيل الخانة الأولى في G نحو 0.14285714285714285، وفي X نحو 0.14. بقيت بايتات A وB دون تغيير، وكانت المخرجات من float64 بالشكل (2,2). القيم الكسرية السابقة هي المرجع؛ الخانات العشرية سجل لهذا التشغيل.
حاصل ثلاثي يكشف الفشل
في X، حاصل CXC=diag(343/50,0)، لا C؛ الباقي CXC−C=diag(−7/50,0). أما CGC=C. الفشل هنا له مرجع كسري، وليس نتيجة تقريب عددين متساويين.
print(C@G@C-C) print(C@X@C-C) print(X@C@X-X)
لأن C وX قطريتان في المثال، أول خانة في CXC هي 7×(7/50)×7=343/50. أما الخانة المطلوبة في C فهي 7=350/50؛ الفارق −7/50. أعاد التشغيل باقيًا نحو −0.14 في تلك الخانة.
كذلك XCX−X في الخانة الأولى هو (7/50)×7×(7/50)−7/50=343/2500−350/2500=−7/2500. يفشل الشرط الثاني أيضًا.
الحاصلان CX وXC قطريان ومتناظران، رغم فشل الشرطين الثلاثيين. نجاح التناظر وحده لا يثبت أننا وجدنا شبه معكوس C؛ لا نستبدل المدخل باسم آخر لتبرير X.
للمقارنة، نختار عاملين جديدين A₀=[[1,2],[0,0]] وB₀=[[1,0],[2,0]]. حاصلُهما diag(5,0)، وشبه معكوسه diag(1/5,0). ضرب شبه معكوسي العاملين بالعكس يعطي الخانة (1+4)/(5×5)=1/5 أيضًا.
هذا التحكم يوافق القاعدة في مثال ناقص الرتبة، لذلك لا نقول إنها تفشل لكل عاملين منفردين. المقارنة الرئيسية تنفي العموم؛ التحكم يحفظ الفرق بين نفي قاعدة عامة ونفي كل حالة منها.
فحصنا هذا التحكم منفصلًا؛ المقياس α=1 ليس ضمن مقاييس الشبكة. في الحالتين نحسب المرجع قبل قراءة الخرج ونقارن بالتسامح المعلن.

عائلة ذات معيار اتفاق واضح
مرت 664 مقارنة على المثال والتحكم و81 زوج عوامل مؤلفًا. في العائلة المحددة أدناه تنجح القاعدة عند p=q، وتفشل عند اختلافهما؛ توجد 27 حالة اتفاق و54 اختلافًا. لا نعطي شرطًا عامًا لكل حاصل مصفوفتين.
كتبنا A=α[[1,p],[0,0]] وB=β[[1,0],[q,0]]، مع α وβ غير صفريين وt=1+pq غير صفري. يكون C=αβt diag(1,0)، وشبه معكوسه G=(1/(αβt))diag(1,0).
شبه معكوس A هو [[1,0],[p,0]] مقسومًا على α(1+p²)، وشبه معكوس B هو [[1,q],[0,0]] مقسومًا على β(1+q²). نستطيع التحقق من الشروط الأربعة لهذه الأعداد كما فعلنا في المثال.
ضع D=(1+p²)(1+q²). أول خانة في X=B⁺A⁺ هي t/(αβD)، بينما أول خانة G هي 1/(αβt). تتساويان بالضبط عندما t²=D في هذه العائلة.
بالتوسيع D−t²=1+p²+q²+p²q²−(1+2pq+p²q²)=(p−q)². لذلك الاتفاق هنا يكافئ p=q. الشروط αβt≠0 جزء من البرهان؛ لا نمد النتيجة إلى كل الرتب والأبعاد.
المرجع لباقي CXC−C هو −αβt(p−q)²/D في الخانة الأولى. ومرجع XCX−X هو −t(p−q)²/(αβD²). يحسبهما الفحص بالكسور دون pinv أو SVD أو solve لصنع المتوقع.
الشبكة: p وq من−3 و0 و2؛ وα من−2 و1/2 و3؛ وβ من−3 و1 و2. لدينا 3⁴=81 زوجًا، وكل t فيها غير صفري. الاختيارات الثلاثة لـp=q مضروبة في المقاييس التسعة تعطي 27 اتفاقًا؛ البقية 54 تفشل.
ثماني مجموعات لكل زوج: شبه معكوس A؛ شبه معكوس B؛ حاصل C؛ شبه معكوسه G؛ حاصل X؛ مرجعا الباقيين؛ الاتفاق والفشل وفق p=q؛ ثم الشروط الأربعة للمخرجات الصحيحة والأنواع والأشكال وثبات المدخلين.
المثال الرئيسي p=2 وq=3 وα=β=1 مستقل عن الشبكة، لأن q=3 ليس ضمنها. مع ثمانية فحوص للتحكم المنفصل، الإجمالي 81×8+8+8=664، ومرت المقارنات بتسامح مطلق 10⁻¹² ونسبي صفر على NumPy 2.3.5 وCPython 3.12.14.
لم نفحص حاصلًا صفريًا أو مداخل مركبة ودفعات ورتبًا عامة أو قيمًا غير صفرية قريبة من حد القطع. لم نقس الأداء أو الاستقرار العام أو مشاركة الذاكرة. النتيجة توضح فشل التركيب في المثال ومعيار الاتفاق في العائلة المعلنة فقط.
| المرشح | الخانة الأولى | CYC−C في الخانة الأولى |
|---|---|---|
| G=(AB)⁺ | 1/7 | 0 |
| X=B⁺A⁺ | 7/50 | −7/50 |
| تحكم p=q=2 | 1/5 | 0 |
للتوسع: أنواع المصفوفات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
