علوم وفضاء

ضرب كرونيكر: من معادلة مصفوفية إلى أربعة مجاهيل

كتل2B وB و0B و3B وبسط الجداء4×4.
حساب ورسم أصليان.

ضرب كرونيكر A⊗B مصفوفة كتل aᵢⱼB. [1][2] نحسب مثالًا.

ابن الكتل واقرأ الأبعاد

إذا كانت A بأبعاد m×n وB بأبعاد p×q، فإن A⊗B بأبعاد mp×nq؛ في كل موضع من A نضع مضاعفًا كاملًا لـB. [1][2]

نختار A=[[2,1],[0,3]] وB=[[1,2],[0,4]]. كل مجموعة داخلية صف، وعناصر الصف مرتبة من اليسار إلى اليمين. كتل A⊗B هي[[2B,B],[0B,3B]].

بالتوسيع نحصل على A⊗B=[[2,4,1,2],[0,8,0,4],[0,0,3,6],[0,0,0,12]]. مثلًا الكتلة العليا اليسرى2B=[[2,4],[0,8]]، والسفلى اليمنى3B=[[3,6],[0,12]].

أما الضرب العادي فيعطي AB=[[2,8],[0,12]]: العنصر العلوي الأيمن2×2+1×4=8، وفيه جمع ناتجين. في جداء كرونيكر تُسجّل هذه النواتج في خانات مختلفة، ولا تُجمع بالطريقة نفسها.

وحساب B⊗A يعطي[[2,1,4,2],[0,3,0,6],[0,0,8,4],[0,0,0,12]]. العنصر في الصف1 والعمود2 يساوي1 هنا، بينما يساوي4 في A⊗B. إذن تبديل العاملين لا يحفظ الناتج في مثالنا.

اجمع الأعمدة قبل كتابة النظام

تجمع vec أعمدة المصفوفة في متجه عمودي. إذا عُرف AXB، فإن vec(AXB)=(Bᵀ⊗A)vec(X)؛ T منقول عادي، دون مرافقة. [1]

اكتب X=[[x₁₁,x₁₂],[x₂₁,x₂₂]]. ترتيب المجهولات في المتجه هو(x₁₁,x₂₁,x₁₂,x₂₂)، فنقرأ العمود الأول كاملًا ثم الثاني؛ لا نقرأ الصف الأول أولًا.

لمصفوفتي مثالنا Bᵀ=[[1,0],[2,4]]، لذلك K=Bᵀ⊗A=[[A,0],[2A,4A]]=[[2,1,0,0],[0,3,0,0],[4,2,8,4],[0,6,0,12]].

يمكن التحقق دون حفظ الهوية. العمود الأول من XB هو عمود X الأول، والعمود الثاني من XB يساوي مثلي عمود X الأول مع أربعة أمثال عمودها الثاني. الضرب في A يعطي عمودي AXB: الأول(2x₁₁+x₂₁,3x₂₁)، والثاني(4x₁₁+2x₂₁+8x₁₂+4x₂₂,6x₂₁+12x₂₂).

هذه المعاملات هي صفوف K بالترتيب نفسه. وفي MATLAB، تحافظ reshape على ترتيب العناصر حسب الأعمدة. [3] مثلًا reshape(X,4,1) يجمع أعمدة X ذات الحجم2×2؛ الكلام هنا وصف للدالة، لا تقرير تشغيل.

حل المثال واكشف خطأين

نطلب AXB=C، حيث C=[[4,12],[6,48]]. إذن الطرف الأيمن بتجميع الأعمدة هو(4,6,12,48). نحل Kvec(X)=vec(C) مع الاحتفاظ بترتيب المجهولات.

من الصف الثاني3x₂₁=6 فنجد x₂₁=2. ومن الأول2x₁₁+x₂₁=4 نحصل على x₁₁=1. ومن الرابع6x₂₁+12x₂₂=48 ينتج x₂₂=3.

يبقى الثالث4x₁₁+2x₂₁+8x₁₂+4x₂₂=12. بالتعويض:4+4+8x₁₂+12=12، ومنه x₁₂=−1. إذن vec(X)=(1,2,−1,3) وX=[[1,−1],[2,3]].

التحقق يعود إلى الأصل: AX=[[4,1],[6,9]]، ثم AXB=[[4,12],[6,48]]=C. بهذا نختبر التحويل والحل معًا، لا مجرد صف واحد.

لو أهملنا المنقول واستعملنا B⊗A، لحصلنا عند المتجه نفسه على(6,24,4,36)، لا vec(C). اختيرت B غير متناظرة حتى لا يختفي هذا الخطأ.

ولو جمّعنا صفوف X، لكان المتجه(1,−1,2,3). ضربه في K يعطي(1,−3,30,30). تجميع الصفوف ممكن باتفاق مختلف ومعاملات مناسبة؛ الخطأ هو تغيير الترتيب مع إبقاء K المصممة للأعمدة.

افهم الحجم قبل تكوين المصفوفة الكبيرة

بنية كرونيكر تتيح حسابات بالمصفوفات الأصغر. [1] نحل مثالنا مباشرة.

نجد A⁻¹=[[1/2,−1/6],[0,1/3]] وB⁻¹=[[1,−1/2],[0,1/4]]؛ وضرب كل مصفوفة في معكوسها يعطي الوحدة. لذا X=A⁻¹CB⁻¹؛ هذا ناتج ضرب المعادلة من اليسار واليمين في الاتجاه الصحيح.

الحساب يعطي CB⁻¹=[[4,1],[6,9]]، ثم A⁻¹CB⁻¹=[[1,−1],[2,3]]. وهو الحل الوحيد هنا: أي حل يحقق المعادلة يجب أن يساوي هذا الناتج بعد الضربين.

إذا كانت A وB بحجم100×100، فجداء كرونيكر بحجم10000×10000، وعدد خانات التمثيل الكثيف100000000. كل عامل وحده يحتوي10000 خانة. هذه أعداد خانات؛ ليست قياسًا للذاكرة الفعلية أو سرعة برنامج.

ولحساب AXB لمدخل X متوافق، يمكن تنفيذ الضربين AX ثم(AX)B مباشرة، دون بناء Bᵀ⊗A. عرض K مفيد لفهم النظام وفحص الترتيب؛ لا يجعل تكوينها أفضل طريقة حسابية لكل حجم.

المعاملات الصحيحة وترتيب الأعمدة ونتيجتا الخطأين.
حساب ورسم أصليان.
الاختبارالناتجهل يساوي vec(C)؟
K(1,2,−1,3)(4,6,12,48)نعم
(B⊗A)(1,2,−1,3)(6,24,4,36)لا
K(1,−1,2,3)(1,−3,30,30)لا

للتوسع: الجبر الخطي.

المراجع

  1. Nick Higham — Kronecker Product
  2. MathWorks — kron
  3. MathWorks — reshape

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