ضرب كرونيكر 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) | لا |
للتوسع: الجبر الخطي.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
