eig قد تعيد قيمًا مركبة من مدخل حقيقي؛ القيم غير الحقيقية تأتي في أزواج مرافقة. [1]
نوع المدخل ليس حكمًا على الجذور
eig قد تعيد قيمًا مركبة من مدخل حقيقي؛ القيم غير الحقيقية تأتي في أزواج مرافقة. [1]
eig تحسب القيم والمتجهات اليمنى؛ القيمة w[i] تقابل العمود V[:,i] ذي طول الوحدة. [1]
المعادلة اليمنى هي A@v=λv. [1]
المثال مصفوفة مربعة حقيقية ذات قطرين مختلفين وخانتين خارج القطر غير متساويتين. كل أعداد المدخل حقيقية؛ ظهور عدد مركب في الخرج لا يعني أن أحدها كان مركبًا أصلًا.
نكتب i للوحدة التخيلية، حيث i²=−1، بينما يكتب كود بايثون 1j. لا نجعل الجزء التخيلي زخرفة في طريقة العرض؛ سنرى أنه يدخل في المساواة نفسها.
مصفوفة حقيقية ومعادلة بلا جذر حقيقي
على NumPy 2.3.5 وCPython 3.12.14، اخترنا A=[[2,−5],[1,−2]] من float64. أعادت eig قيمتين تقاربان i و−i، ومصفوفة متجهات من complex128.
import numpy as np A=np.array([[2.,-5.],[1.,-2.]],dtype=np.float64) w,V=np.linalg.eig(A) print(A.dtype,w.dtype,V.dtype) print(w) print(A@V-V*w)
حساب مربع المصفوفة يعطي [[4−5,−10+10],[2−2,−5+4]]=[[-1,0],[0,-1]]. كما أن محدد A−λI يساوي (2−λ)(−2−λ)+5=λ²+1. هذان حسابان من أعدادنا، قبل استدعاء eig.
العددان i و−i يصفران λ²+1. ولا يصفره عدد حقيقي، لأن مربع عدد حقيقي غير سالب. بذلك لا يلزم أن تكون جذور معادلة مصفوفة حقيقية أعدادًا حقيقية.
نعوض اتجاهًا صريحًا: A@(5,2−i)=(10−5(2−i),5−2(2−i))=(5i,1+2i). وهذا i(5,2−i)، لأن i(2−i)=2i+1.
بالمرافقة، الاتجاه (5,2+i) يحقق A@v=−iv. مرافقة عناصر A لا تغيرها في مثالنا؛ لكن مرافقة القيمة واتجاهها تغير الإشارة التخيلية معًا.
لا يوجد متجه حقيقي غير صفري يحقق Ax=λx بقيمة حقيقية هنا: لو وجد، لأعطى تطبيق A مرة أخرى λ²x، بينما A²x=−x. ينتج (λ²+1)x=0، وهو مستحيل لمتجه غير صفري وعدد λ حقيقي.
سجل التشغيل قيمتين جزؤهما الحقيقي −6.938893903907228e−17، وتخيليهما 1 و−1. لا نسجل الأعداد المعادة على أنها ±i حرفيًا؛ قارنناها بالجذرين الدقيقين بتسامح مطلق 10⁻¹² ونسبي صفر.
ماذا يفعل حذف الجزء التخيلي؟
في التشغيل، كان الجزء الحقيقي لكل قيمة نحو −6.94×10⁻¹⁷. أخذ w.real حذف الجزأين التخيليين ±1؛ صار مربع طول باقي المعادلة 1 لكل عمود ذي طول الوحدة، بدل باقي يقارب الصفر.
wrong=A@V-V*w.real print(w.real) print(np.sum(np.abs(wrong)**2,axis=0)) D=np.diag(np.array([2.,5.],dtype=np.float64)) wd,Vd=np.linalg.eig(D) print(wd,wd.dtype,Vd.dtype)
السطر w.real يأخذ الأجزاء الحقيقية للقيم المعادة في هذا التشغيل. لا يغير مصفوفة A، ولا يحسب قيمًا ذاتية بديلة لها. في المثال تصبح القيم المستخدمة قرب الصفر، بينما تبقى الأعمدة المركبة كما أعادتها eig.
باستخدام الجذر الدقيق i، إذا Av=iv ومتجه v بطول الوحدة، فإن استبداله بالصفر يعطي Av−0v=iv. مربع الطول هو |i|²×1=1. وللجذر −i النتيجة نفسها. هذا مرجع مستقل للباقي الذي سجلناه.
حين احتفظنا بالقيم المركبة، كانت بواقي A@V−V*w قريبة من الصفر ضمن التسامح. وحين استخدمنا الأجزاء الحقيقية فقط، سجلت المقارنة مربع طول 1 لكل عمود. الفارق لا يصغر لمجرد أن الجزء الحقيقي الصغير قد يقرب إلى صفر.
المتجه المسجل عند القيمة ذات الجزء التخيلي الموجب كان تقريبًا (0.912871,0.365148−0.182574i). إنه اتجاه (5,2−i)/√30 في هذا التشغيل. لا نطلب إشارة أو طورًا معينًا من المكتبة لمقارنة الاتجاه.
في التحكم D، معادلة القيم هي (2−λ)(5−λ)=0. أعاد التشغيل [2.,5.] ومتجهات الوحدة من float64؛ هنا أخذ الجزء الحقيقي لا يحذف مقدارًا تخيليًا غير صفري. هذا اختلاف بين مثالين، لا ضمان أن كل مدخل حقيقي سيعيد أحد النوعين دائمًا.
ترتيب القيم غير مضمون؛ احتفظ باقتران القيمة بعمودها. [1]

فحص مستقل وحدود ما أثبتناه
تحكم D=diag(2,5) من float64 أعاد قيمًا ومتجهات من float64. مرت 228 مقارنة على 27 مصفوفة مؤلفة والمثال المعاد منفصلًا والتحكم؛ لا نعمم على التكييف أو الدقة العامة.
ألفنا A=[[a,−b],[c,−a]]، حيث a من−2 و0 و2، وt من1 و2 و3، وc من1 و2 و4، ثم b=(a²+t²)/c. الأعداد الناتجة قابلة للتمثيل الدقيق في المدخلات المستخدمة؛ لدينا 3³=27 حالة.
بالكسور الدقيقة، a²−bc=−t² والخانتان خارج قطر A² صفريان. إذن A²=−t²I، والمعادلة المميزة λ²+t²=0. الجذران ±it، واتجاهاهما (b,a−it) و(b,a+it). يبني المرجع هذه الأعداد قبل قراءة eig.
لكل اتجاه z نبني P=zz*/(z*z)، حيث النجمة نقل ومرافقة. إذا ضربنا z بعدد مركب غير صفري، يبقى P نفسه، لأن البسط والمقام يضربان في مربع مقدار العدد. بهذه الهوية نقارن الاتجاه دون تثبيت الطور.
للقيمة +it، ضع n=b²+a²+t². الجزء الحقيقي من P هو [[b²/n,ba/n],[ba/n,(a²+t²)/n]]، والتخيلي [[0,bt/n],[−bt/n,0]]. حسبنا عناصرهما باستخدام Fraction؛ مرجع −it هو المرافق.
في المثال a=2 وt=c=1، نجد b=5 وn=30. الجزء الحقيقي [[5/6,1/3],[1/3,1/6]] والتخيلي [[0,1/6],[−1/6,0]]. نقارن الجداء الخارجي للعمود المعاد مع هذا المرجع، لا مع عمود صنعه استدعاء eig آخر.
ثماني مجموعات لكل حالة: الجذور؛ الأنواع والأشكال وثبات بايتات A؛ جداول الاتجاهين؛ المعادلتان الصحيحتان؛ أطوال الوحدة وعلاقة المرافقة؛ هوية A²؛ باقي حذف الجزء التخيلي ومربع طوله t²؛ ثم الاتجاهات المؤلفة والتعويض في λ²+t².
المثال الرئيسي أحد أعضاء الشبكة وأعيد منفصلًا، فلا ندعي 28 مدخلًا مختلفًا. الحساب 27×8+8+4=228؛ الأربعة الأخيرة للتحكم القطري: القيم، والأنواع والأشكال، والمعادلة والمتجهات، وثبات المدخل. مرت المقارنات كلها.
النطاق float64 لمصفوفات حقيقية 2×2 من هذه العائلة على NumPy 2.3.5 وCPython 3.12.14، وخرج مركب من complex128 فيها. لم نفحص قيمًا متكررة أو شبه حقيقية أو دفعات أو مداخل غير منتهية، ولم نقس الأداء أو الاستقرار العام أو مشاركة الذاكرة.
| المدخل | نوع القيم | القيم الدقيقة |
|---|---|---|
| A حقيقية | complex128 | i و−i |
| w.real في A | float64 | ليست قيم A الذاتية |
| D حقيقية | float64 | 2 و5 |
للتوسع: أنواع المصفوفات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
