علوم وفضاء

eig: هل المتجه الأيمن نفسه متجه أيسر؟

معادلتا المثال من اليمين واليسار.
المتجه الصحيح من اليمين يفشل من اليسار هنا.

eig تعيد متجهات يمنى؛ المعادلة اليسرى شرط آخر. [1] نختبر الفرق بمصفوفة غير متناظرة.

احتفظ بجهة الضرب

eig تعيد متجهات يمنى؛ المعادلة اليسرى شرط آخر. [1] نختبر الفرق بمصفوفة غير متناظرة.

الأيمن يحقق A@v=λv، والأيسر يحقق yᵀ@A=λyᵀ. لا يلزم تطابق اتجاهيهما عمومًا. [1]

نكتب متجهات حقيقية بمركبتين ونستخدم NumPy أحادي البعد في الكود. التعبير v@A يقرأ v من جهة اليسار، بينما A@v يقرأه من اليمين. لا يحول نقل الرمز إلى الجانب الآخر المتجه إلى حل صالح تلقائيًا.

هذا السؤال يبدأ بعد اختيار عمود eig الصحيح بالفعل. لا نأخذ صفًا من مصفوفة المتجهات المعادة ونخلطه بعمودها؛ نأخذ العمود نفسه ثم نفحص معادلتين مختلفتين.

المثال جبري بلا وحدات أو بيانات مقيسة. لا نتناول هنا تعريفات الأيسر مع المرافق المركب أو استخدام eig على مصفوفة عامة كبيرة.

متجه صحيح من جهة وخاطئ من الأخرى

على NumPy 2.3.5 وCPython 3.12.14، نختار A=[[3,2],[0,7]] من float64. للقيمة 3 أعاد التشغيل المتجه الأيمن v=(1,0)، ويحقق A@v=3v.

import numpy as np A=np.array([[3.,2.],[0.,7.]],dtype=np.float64) w,V=np.linalg.eig(A) i=w.tolist().index(3.) v=V[:,i] print(w,v) print(A@v-3*v) print(v@A-3*v)

لكن v@A=(3,2)، فتكون v@A−3v=(0,2). الاتجاه الأيسر y=(2,−1) يحقق y@A=(6,−3)=3y؛ لا نحصل عليه بمجرد استعمال v في الجهة الأخرى.

نحسب دون استدعاء المكتبة: A@(1,0)=(3,0)، وهو 3(1,0). أما ضرب الصف (1,0) في A فيعطي (3,2)، ويختلف عن (3,0) في المركبة الثانية بمقدار 2.

لا يكفي كون المتجه بطول واحد أو قبول الضرب لأبعاده. المتجه v في المثال يملك هاتين الخاصيتين، ومع ذلك لا يحقق الشرط الأيسر. تغيير إشارته يقلب الباقي إلى (0,−2)، فلا يمحو الخطأ.

لإيجاد اتجاه أيسر للقيمة3، ضع y=(a,b). حينئذ y@A=(3a,2a+7b). شرط المساواة مع 3y يعطي 2a+4b=0؛ نختار a=2 وb=−1، ونحصل على اتجاه غير صفري.

في الاتجاه المختار، (2,−1)@A=(6,4−7)=(6,−3). أما A@(2,−1)=(4,−7)، وليس 3(2,−1)=(6,−3). إذن الاتجاه الأيسر الصحيح نفسه يفشل كاتجاه أيمن هنا.

يمكن ضرب المتجه الموافق في عدد غير صفري مع بقاء المعادلة. نستخدم (2,−1) للحساب اليدوي، ونقارن اتجاهه مع الخرج ذي طول الوحدة؛ لا نشترط أن تعيد المكتبة هذين العددين حرفيًا.

استعمل المنقول وطابق القيمة

أعادت eig(A) القيم [3,7]، وأعادت eig(A.T) القيم [7,3] في التشغيل. طابقنا الاتجاهات بالقيمة؛ المتجه الموافق3 من المنقول يوافق (2,−1)/√5 حتى الإشارة، بينما التحكم القطري يوحد الاتجاهين.

z,L=np.linalg.eig(A.T) j=z.tolist().index(3.) left=L[:,j] print(z,left) print(left@A-3*left) D=np.array([[3.,0.],[0.,7.]],dtype=np.float64) wd,Vd=np.linalg.eig(D)

ترتيب القيم الذاتية ليس مضمونًا في التوثيق؛ كل قيمة تقابل عمودها في الخرج نفسه. [1]

في مصفوفتنا الحقيقية، إذا Aᵀy=λy، فإن نقل طرفي المساواة يعطي yᵀA=λyᵀ. لذلك يوفر عمود المنقول اتجاهًا أيسر للأصل عند القيمة المقابلة. هذه هوية جبرية في النطاق الحقيقي المعلن.

سجل التشغيل للمنقول العمود الموافق3 تقريبًا (0.894427,−0.447214)، وهو اتجاه (2,−1)/√5. عموده الآخر، الموافق7، كان (0,1). لم نجعل L[:,0] يقابل w[0]؛ الأول للقيمة7 والثاني للقيمة3 في السجل.

للقيمة7 نجد اتجاهًا أيمن (1,2)، لأن A@(1,2)=(7,14)=7(1,2). والاتجاه الأيسر (0,1) يعطي (0,1)@A=(0,7)=7(0,1). كلا الزوجين يختلف بين الجهتين.

في التحكم D=diag(3,7)، تصبح Dᵀ=D. أعاد التشغيل مصفوفة الوحدة للمتجهات، فنجح (1,0) للقيمة3 و(0,1) للقيمة7 من الجهتين. هذا تحكم خاص؛ لا يكفي لتعميم التطابق على مصفوفة غير متناظرة.

نراجع الاتجاه بدل الإشارة: لكل x غير صفري، نبني P=xxᵀ/(xᵀx). يتساوى P للمتجه وسالبه ولأي مضاعف غير صفري منه. عند القيمة3، مرجع الأيمن [[1,0],[0,0]]، والأيسر [[4/5,−2/5],[−2/5,1/5]]؛ الاختلاف واضح.

اتجاها اليمين واليسار الموافقان لكل قيمة.
مطابقة القيمة تسبق مقارنة الاتجاهين.

مرجع الفحص وحدوده

مرت 224 مقارنة على المثال و27 مصفوفة مثلثية مؤلفة بقيم قطرية متميزة. مرجع Fraction يقارن الاتجاهات دون اشتراط الإشارة؛ لا نعمم على المركب أو المتكرر أو حدود الاستقرار.

الشبكة A=[[p,k],[0,q]]، حيث p من2 و3 و4، وq من6 و7 و8، وk من−2 و0 و2. لدينا 3×3×3=27 حالة، إضافة إلى المثال الأساسي. فرق القطر d=q−p موجب دائمًا.

من det(A−λI)=(p−λ)(q−λ)، القيم p وq. اتجاهان أيمنان هما (1,0) و(k,d)، واتجاهان أيسران هما (d,−k) و(0,1)، بالترتيب نفسه للقيم. نثبتها بالتعويض المباشر قبل مقارنة خرج eig.

مثلًا A@(k,d)=(pk+kd,qd)=(qk,qd). كذلك (d,−k)@A=(dp,dk−kq)=(pd,−pk). هذه علاقات بأعداد صحيحة، لا توقعات مستخرجة من eig أو من حل نظام آخر.

لكل حالة ثماني مجموعات: قيم الأصل والمنقول؛ الأشكال والأنواع وأطوال الوحدة وثبات المدخل؛ اتجاهات اليمنى؛ اتجاهات اليسرى؛ نجاح المعادلتين الصحيحتين؛ فشل اليمنى من اليسار ومربع باقيها؛ فشل اليسرى من اليمين؛ ثم تعامد الأيسر لقيمة مع الأيمن للقيمة الأخرى واتفاق الاتجاهين فقط عند k=0. الإجمالي 28×8=224.

إذا استعملنا المتجهات ذات طول الوحدة من الجهة الخاطئة في هذه العائلة، يكون مربع طول الباقي k². للقيمة q مثلًا، اتجاه الأيمن (k,d) يعطي باقيًا أيسر (−dk,k²)/√(k²+d²)، ومجموع مربعاته k². في المثال k=2 فيكون 4.

يبني المرجع الجداول P باستخدام Fraction من الاتجاهات الصحيحة، دون eig أو solve أو norm لإنتاج المتوقع. المقارنة العددية بتسامح مطلق 10⁻¹² ونسبي صفر، على float64؛ مطابقة الأعمدة بحسب قيمها، لا بحسب ترتيب مفترض.

الحالات التسع ذات k=0 قطرية وتوافق الاتجاهات في الجهتين؛ الحالات الأخرى تكشف الفرق. فحصنا بقاء بايتات A، ولم نفحص مصفوفة معيبة أو قيمًا مكررة أو متقاربة أو مداخل مركبة ودفعات وغير منتهية. لا نقدم ضمانًا عامًا للثبات أو الأداء أو مشاركة الذاكرة.

القيمةاتجاه أيمناتجاه أيسر
3(1,0)(2,−1)
7(1,2)(0,1)
3 في D(1,0)(1,0)

للتوسع: أنواع المصفوفات.

المراجع

  1. NumPy linalg.eig

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