علوم وفضاء

kron: أي بُعد يضاف عند اختلاف عدد المحاور؟

مصفوفة ومتجه وناتج.
المتجه يوافق صفًا.

kron توائم عدد المحاور بإضافة أبعاد بطول1 في بداية شكل المدخل الأقل محاور؛ أطوال محاور الناتج حاصل ضرب الأطوال المتناظرة. [1]

طول البعد ليس قيمة العنصر

kron توائم عدد المحاور بإضافة أبعاد بطول1 في بداية شكل المدخل الأقل محاور؛ أطوال محاور الناتج حاصل ضرب الأطوال المتناظرة. [1]

kron تبني كتلًا من المدخل الثاني مضروبة بعناصر الأول. [1]

في مثالنا نقرأ (3,) بوصفه محورًا واحدًا طوله3. مواءمته مع شكل ذي محورين تعطي (1,3)، فلا نبدل قيم المتجه ولا نكتب شكلًا جديدًا له في مكانه.

من (2,2) مع (1,3) نحصل على (2×1,2×3)=(2,6). ولو اخترنا (3,1) بدلًا منه، لكان حاصل الأطوال (6,2). الاختياران ليسا عنوانًا واحدًا للخانات.

صف ضمني وعمود صريح

في مثالنا A بالشكل (2,2) وv بالشكل (3,)، أعادت kron(A,v) مصفوفة بالشكل (2,6)، واتفق معها التحكم بصف صريح شكله (1,3).

تحويل v صراحةً إلى عمود بالشكل (3,1) أعاد ناتجًا بالشكل (6,2)؛ لم يساو ترتيب خانات الناتج السابق في مثالنا.

import numpy as np A=np.array([[3,-2],[1,4]],dtype=np.int64) v=np.array([2,-1,5],dtype=np.int64) vr=np.expand_dims(v,0) vc=np.expand_dims(v,1) R=np.kron(A,v) E=np.kron(A,vr) C=np.kron(A,vc)

expand_dims تضيف محورًا في الموضع المحدد بـaxis. [2]

في تشغيل NumPy 2.3.5 وCPython 3.12.14، كان vr بالشكل (1,3) وقيمته [[2,-1,5]]، وكان vc بالشكل (3,1) وقيمته [[2],[-1],[5]]. كل المدخلات والنواتج المعلنة من int64.

R وE حملتا [[6,-3,15,-4,2,-10],[2,-1,5,8,-4,20]]. الصف الأول يجمع3v ثم−2v، والصف الثاني يجمع1v ثم4v. لم نجمع عناصر هذه الكتل في أعداد مفردة.

أما C فحملت [[6,-4],[-3,2],[15,-10],[2,8],[-1,-4],[5,20]]. أول ثلاثية صفوفها تخص صف A الأول، ثم تأتي الثلاثية التي تخص صفه الثاني. في كل صف ضرب عنصر من v في عنصري صف A.

لكل ناتج12 خانة، لكن R لها صفان وستة أعمدة، وC لها ستة صفوف وعمودان. مثلًا المنتج (−2)×5=−10 يظهر عند R[0,5] وعند C[2,1]. المنتج4×(−1)=−4 يظهر عند R[1,4] وعند C[4,1].

تحكم يفصل الآحاد عن المحاور

بقيت قيم v=[2,-1,5] وشكلها (3,) دون تغيير؛ التحكم بمتجه [1,1,1] أعطى قيمًا أخرى. البعد بطول1 لم يستبدل عناصر v بالآحاد.

u=np.array([1,1,1],dtype=np.int64) Q=np.kron(A,u)

Q في تشغيلنا بالشكل (2,6)، وقيمتها [[3,3,3,-2,-2,-2],[1,1,1,4,4,4]]. تساوي الشكل مع R لم يجعل القيم متساوية: الخانة الأولى3 في Q، وكانت6 في R.

تكررت عناصر A هنا لأننا اخترنا فعلًا عناصر u الثلاثة آحادًا. أما في R فقد ضربنا3 في2 و−1 و5، فظهر6 و−3 و15. كلمة1 في الشكل (1,3) تصف طول محور، لا العناصر الثلاثة داخله.

قارنا بايتات A وv قبل جميع المسارات وبعدها، فبقيت ثابتة. بقي v بالشكل (3,)، وبقيت قيمه الأصلية. لم نفحص الكتابة عبر ذاكرة مشتركة أو طريقة تخصيص مخزن الخرج.

عمود صريح وتحكم الآحاد.
الشكل والقيمة.

الفهارس والمرجع المستقل

مرت5200 مقارنة:648 مدخلًا والمثال وتحكم الآحاد، بثمانية فحوص لكل حالة؛ النطاق int64 ومصفوفة2×2 ومتجه بثلاثة عناصر، دون قياس أداء أو ضمان دقة عام.

ترتيب الفهارس في kron يتبع kₜ=iₜsₜ+jₜ، بعد مواءمة الأشكال. [1]

في مثال الصف، موضع المنتج A[i,j]×v[k] هو R[i,3j+k]؛ i وj من0 إلى1، وk من0 إلى2. نقرأ كل ثلاثية متجاورة باعتبارها كتلة العنصر A[i,j].

في مثال العمود، المنتج نفسه عند C[3i+k,j]. عامل3 هنا دخل فهرس الصف، لأننا جعلنا طول محور الصف في المدخل الثاني3. هذا اشتقاق لعناوين المثالين، لا مجرد عد للخانات.

مرجعنا يبني R بقائمة صفين، وفي كل صف يمر على j ثم k. ويبني C بمرور i ثم k للصفوف وj للأعمدة. يضرب أعداد Python الصحيحة فقط؛ لا يستدعي kron أو expand_dims أو reshape لصنع القيم المتوقعة.

عددنا كل A بأربعة عناصر من −1 و0 و2، أي3⁴=81 مصفوفة، وكل v بثلاثة عناصر من −2 و1، أي2³=8 متجهات. لدينا81×8=648 حالة. أضفنا المثال وتحكم الآحاد فصار عدد الحالات650.

ثمانية فحوص لكل حالة: R؛ E؛ C؛ شكل وقيم الصف والعمود الصريحين؛ مطابقة فهارس R؛ مطابقة فهارس C؛ ثبات المدخلين وشكل v؛ ورتبة النواتج وعدد خاناتها. الإجمالي650×8=5200، ومرت كلها.

الأعداد والنواتج صغيرة وتدخل int64 في هذا النطاق. استبعدنا الأشكال والأطوال الأخرى، وتجاوز المجال والعائمة والمركبة وآثار تعديل الذاكرة والأداء. قبل تفسير الخرج اكتب شكل كل مدخل، ثم موضع كل بعد مضاف، ثم عنوان منتج واحد تستطيع فحصه.

المدخل الثانيشكل الخرجخانة المنتج −10
v: (3,)(2,6)R[0,5]
vr: (1,3)(2,6)E[0,5]
vc: (3,1)(6,2)C[2,1]
u: [1,1,1](2,6)لا يظهر −10 في Q

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

المراجع

  1. NumPy kron
  2. NumPy expand_dims

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