علوم وفضاء

svd: أين تختفي نواة المصفوفة العريضة؟

Vh الكاملة والمختزلة.
قيم التشغيل مقربة؛ إشارة الاتجاه غير مفروضة.

full_matrices تغيّر أحجام U و Vh؛ طول s هو K=min(M,N). [1]

عدد القيم ليس عدد الأعمدة

full_matrices تغيّر أحجام U و Vh؛ طول s هو K=min(M,N). [1]

عند full_matrices=True، شكلا U و Vh هما (M,M) و(N,N)؛ وعند False يصبحان (M,K) و(K,N). [1]

النواة هنا هي مجموعة المتجهات x التي تحقق Ax=0. سنجدها مباشرة من معادلتَي مثالنا، ثم نقارنها بما احتفظت به المخرجات. لا نستخدم غياب الصفر في قائمة قصيرة دليلًا على غياب اتجاه في فضاء أطول.

نثبت صفين وثلاثة أعمدة؛ إذن K=2. لا نتوقع قيمة ثالثة في s لمجرد أن المدخل يقبل ثلاثة مكونات. الفرق الذي نبحث عنه يقع في المتجهات المحتفظ بها، وليس في إضافة عدد إلى s.

قيمتان موجبتان واتجاه صفري

نختار A=[[3,0,3],[0,2,0]]؛ القيمتان √18 و2، لكن A·(-1,0,1)=0، فهناك اتجاه غير صفري ترسله إلى الصفر.

Vh الكاملة بالشكل (3,3)، والمختزلة (2,3). في التشغيل كان صف الكاملة الثالث تقريبًا (-0.707107,0,0.707107)، ولم يوجد صف ثالث في المختزلة.

import numpy as np A=np.array([[3,0,3],[0,2,0]],dtype=np.float64) Uf,sf,Vhf=np.linalg.svd(A,full_matrices=True) Ur,sr,Vhr=np.linalg.svd(A,full_matrices=False) right_basis=Vhf[2:,:].T

على NumPy 2.3.5 و CPython 3.12.14، كان sf و sr بالشكل (2,)؛ سجّل كلاهما تقريبًا [4.242640687119286,2.0]. كانت U في الطلبين (2,2)، وكان right_basis (3,1). جميع هذه المخرجات من float64.

لحساب المرجع، حاصل ضرب الصف الأول بنفسه 3²+3²=18، والصف الثاني بنفسه 2²=4؛ حاصل ضرب الصفين صفر. لذلك AAᵀ في حسابنا الصحيح هو [[18,0],[0,4]]، وجذرا القيمتين هما √18 و2.

أما المعادلتان Ax=0 فهما 3x₁+3x₃=0 و2x₂=0. إذن x₂=0 وx₁=-x₃؛ كل حل مضاعف لـ(-1,0,1). للمتجه غير الصفري طول √2، فتوحيده يعطي n=(-1,0,1)/√2.

في حسابنا A n=0، رغم أن √18 و2 موجبتان. المتجه الوحدي في الصف الثالث المسجل يوافق هذا الاتجاه ضمن التسامح. لا نفرض إشارته على أي تشغيل آخر؛ n و-n يصفان الاتجاه نفسه.

إعادة البناء لا تستعيد الصف المحذوف

أعاد الشكلان بناء A ضمن التسامح. التحكم المربع لم يضف اتجاهًا، وفي التحكم الطويل كانت الزيادة في U وخصّت نواة المنقول.

في الطلب المختزل فحصنا Ur @ diag(sr) @ Vhr. أما الطلب الكامل فأنشأنا Sigma بالشكل (2,3)، مع sf على أول موضعين من القطر وبقية العناصر أصفارًا، وفحصنا Uf @ Sigma @ Vhf. كلا الحاصلين وافق A بتسامح مطلق 1e-12.

هذا يفسر كيف تكفي صفوف Vhr لإعادة البناء في مثالنا: الاتجاه المحذوف ترسله A إلى الصفر. نجاح إعادة البناء لا يعني أن الصف الثالث موجود في المخرج المختزل. القطعة Vhr[2:,:] فارغة بالشكل (0,3)، ومنقولها (3,0).

للمقارنة، التحكم [[3,0],[0,2]] مربع وقابل للعكس؛ Vh في الطلبين (2,2)، ومعادلتاه الصفريتان لا تتركان إلا المتجه الصفري. ليست كل إعادة بناء مختزلة حذفًا لاتجاه نواة موجود في هذا الطرف.

أنشأنا أيضًا T=A.T بالشكل (3,2). صار U الكامل (3,3) والمختزل (3,2)، بينما بقي Vh في الطلبين (2,2). الاتجاه الإضافي في U الكامل حقق T.T @ n=0 في الفحص؛ إنه اتجاه في نواة المنقول، لا عمودًا إضافيًا في نواة T.

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

قارن الإسقاط بدل إشارة المتجه

مرت 68 مقارنة على ست حالات float64؛ المرجع حاصل ضرب صفوف ومعادلة نواة وإسقاط مستقل، بتسامح مطلق 1e-12 ودون ضمان دقة عام.

كتبنا الإسقاط المرجعي من n مباشرة: nnᵀ=[[1/2,0,-1/2],[0,0,0],[-1/2,0,1/2]]. يقلب تغيير إشارة n عاملين، لذلك يبقى حاصل ضربهما نفسه. هذه مقارنة أوضح من اشتراط ظهور علامات بعينها في صف Vh.

قارن الفحص إسقاط أساس الكاملة بهذا المرجع، وفحص أن A تضرب ذلك الأساس إلى الصفر. وقارن أيضًا I-Vhr.T @ Vhr بالإسقاط نفسه في الحالات العريضة. لم نستخرج المرجع من استدعاء SVD ثانٍ.

الحالات العريضة الأربع هي [[p,0,p],[0,q,0]]، حيث p من 2 أو 3 و q من 1 أو 2. أضفنا المربع و T، فأصبحت ست حالات. لكل حالة 11 مقارنة تشمل الأشكال والقيم وإعادة البناء والتعامد والإسقاط والنوع وثبات المدخل.

أضفنا فحصًا لوجود عمود نواة كامل مع إيجابية s في الحالة الرئيسية، وفحصًا لاتجاه U الإضافي في التحكم الطويل؛ الإجمالي 6×11+2=68. استعملنا جمع جداءات أعداد مفردة في بايثون للضرب المرجعي، وتسامحًا مطلقًا 1e-12 مع rtol=0.

نطاقنا مصفوفات حقيقية ثنائية الأبعاد ذات رتبة كاملة بحسب صفوفها أو أعمدتها. لم نفحص نقص الرتبة أو اختيار حد صفري عددي أو مدخلات مركبة أو دفعات أو أداءً. عند قراءة مخرجات مثالنا، سجّل شكل Vh وطول s بجانب معنى الاتجاه الذي تريد استعادته.

الطلبU / s / Vhالاتجاه الإضافي
A كامل(2,2) / (2,) / (3,3)نواة A
A مختزل(2,2) / (2,) / (2,3)لا صف ثالث
مربع كامل(2,2) / (2,) / (2,2)لا اتجاه إضافي
T كامل(3,3) / (2,) / (2,2)نواة T.T

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

المراجع

  1. NumPy svd

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