تقنية

matrix_norm: هل الافتراضي يساوي أكبر قيمة مفردة؟

الافتراضي 13 وخيار 2 يعطي 12.
أعداد المثال نفسه بطلبين مختلفين.

افتراضي matrix_norm هو fro؛ معيار فروبينيوس جذر مجموع مربعات القيم المطلقة، أما معيار المصفوفة 2 فأكبر قيمة مفردة. [1] [2]

اختر المقدار قبل قراءة العدد

افتراضي matrix_norm هو fro؛ معيار فروبينيوس جذر مجموع مربعات القيم المطلقة، أما معيار المصفوفة 2 فأكبر قيمة مفردة. [1] [2]

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

السؤال هنا أي مقدار طلبناه، لا كيف نجد اتجاهات تحليل القيم المفردة أو كيف نحسب نسبة قيمتين لتحديد التكييف. نتيجة واحدة لا تكفي دون اسم الخيار وشكل المدخل.

معيار المتجه 2 يحسب جذر مجموع مربعات القيم المطلقة أيضًا. [2] نستخدم ذلك لمسار مختلف في المثال، مع الاحتفاظ بالمصفوفة الأصلية للمقارنة.

ثلاث عشرة مقابل اثنتي عشرة

في مصفوفة المثال A=[[5,0],[0,12]]، أعاد الافتراضي وord="fro" العدد 13، بينما أعاد ord=2 العدد 12، على NumPy 2.3.5 وCPython 3.12.14.

import numpy as np A=np.array([[5,0],[0,12]],dtype=np.float64) print(np.linalg.matrix_norm(A)) print(np.linalg.matrix_norm(A,ord="fro")) print(np.linalg.matrix_norm(A,ord=2))

نجمع مربعات العناصر بأنفسنا: 25+0+0+144=169، وجذرها 13. أما حاصل AᵀA فهو القطر 25 و144؛ الجذران غير السالبين هما 5 و12، والأكبر 12. هذه أعداد مستقلة عن ناتج الاستدعاء، وليست توقعًا مستخرجًا من استدعاء ثانٍ للدالة نفسها.

لم نأخذ الجذر التربيعي لأكبر عنصر في A؛ ذلك سيعطي جذر 12، وهو مقدار آخر. ولم نستخدم مجموع عناصر القطر 17. لكل خطوة حساب مدخل وتعريف، ولا يجعل إمكان طباعة عدد منه جوابًا للسؤال المطلوب.

سجلنا النتائج القياسية من numpy.float64 وبالشكل (). ظل المدخل بالشكل (2,2) ومن float64، وبقيت بايتاته بعد الطلبات. لا نستنتج من ذلك ملكية ذاكرة أو اختيار خوارزمية داخلية أو ضمانًا لجميع المدخلات.

المتجه المسطح يغير السؤال

تحويل الأعداد الأربعة نفسها إلى متجه ثم طلب norm(v,ord=2) أعاد 13 في التشغيل؛ لم يعد مقدار أكبر قيمة مفردة للمصفوفة الأصلية.

v=A.reshape(4) print(np.linalg.norm(v,ord=2))

ترتيب المتجه هنا [5,0,0,12]. حسبنا مربع طول هذا المتجه من عناصره: 25+144=169، فخرج 13. لا يوجد خلاف عددي بين هذا الحساب والافتراضي السابق؛ كلا المرجعين في مثالنا يجمع المربعات الأربعة.

لكننا لم نطلب على المتجه العملية التي أعادت 12 للمصفوفة. تحويل الشكل ليس ملاحظة جانبية إذا كان شكل المدخل يحدد المقدار. احتفظنا بالسجلين: مصفوفة ذات بعدين وخيار 2، ومتجه ذو بعد واحد وخيار 2.

يستخدم فحصنا reshape مرة لكل حالة، منفصلًا عن عد الاستدعاءات الأربعة المسماة. بقي شكل المتجه (4,) ونوعه float64. لا نسمي إعادة تشكيله استدعاءً إضافيًا إلى matrix_norm، ولا نزعم أنه ينسخ البيانات.

المتجه 13 والتحكم يعطي 5.
الاتفاق في التحكم لا يثبت التطابق العام.

اتفاق التحكم وحدود الفحص

تحكم مستقل C=[[5,0],[0,0]] أعاد 5 في الطلبات الأربعة. هذا الاتفاق لا يلغي الفرق الذي ظهر في A؛ وجود مقدار آخر غير صفري مهم هنا.

C=np.array([[5,0],[0,0]],dtype=np.float64) print(np.linalg.matrix_norm(C)) print(np.linalg.matrix_norm(C,ord="fro")) print(np.linalg.matrix_norm(C,ord=2)) print(np.linalg.norm(C.reshape(4),ord=2))

في حساب التحكم مجموع المربعات 25، والقطر في CᵀC هو 25 و0. الجذر المطلوب لكل المرجعين 5. اتفق المخرجان عندما بقيت مساهمة واحدة، بينما وجود 5 و12 معًا في المثال السابق جعل جذر مجموع مربعيهما أكبر من 12.

هذا تحكم في هوية مقدارين للمصفوفة نفسها؛ لم نفحص كل مصفوفة ممكنة ثم نستنتج التطابق من عدد الحالات المتفقة. تصنيف حالات شبكتنا المتفقة استخدم المحدد الصحيح ad−bc=0، وشمل المصفوفة الصفرية أيضًا. لم نطلق على كل حالة متفقة وصف الرتبة الواحدة، فالصفر مختلف.

شمل الفحص 83 مصفوفة حقيقية صغيرة من float64، مع 332 استدعاءً مسمى لدالتي المعيار و332 خرجًا عدديًا؛ اتفق الافتراضي والطيفي ضمن السماحية في 32 حالة واختلفا في 51.

الشبكة تحتوي جميع 3⁴=81 ترتيبًا لأربعة عناصر من {−2,0,3}، وأضفنا A وC حالتين خارجها. لكل حالة أربع نتائج: الافتراضي وfro و2 للمصفوفة، ثم 2 للمتجه المسطح. إنشاء المصفوفات بواسطة np.array وعمليات reshape، 83 مرة لكل منهما، مذكوران خارج عد استدعاءات المعيار؛ لا يدخلان ضمن 332 خرجًا عدديًا.

حسب المرجع جذر مجموع المربعات باستخدام Decimal بدقة 90 رقمًا. للمصفوفة [[a,b],[c,d]] كتبنا T=a²+b²+c²+d² وD=(a²+c²−b²−d²)²+4(ab+cd)²، ثم الجذر التربيعي للكسر (T+جذر D)/2 لمقدار الطلب 2. استخرجنا هذه الصيغة بحل معادلة القيم الذاتية للمصفوفة المتماثلة AᵀA، دون استدعاء norm أو SVD أو eig لإنتاج المتوقع.

قورنت كل نتيجة بمرجعها بشرط خطأ مطلق لا يزيد على 10⁻¹² مضروبًا في الأكبر من 1 والقيمة المطلقة للمرجع. أكبر فرق مسجل نحو 8.88×10⁻¹⁶. الأرقام المتفقة في الشبكة متفقة ضمن الفحص، لا وعد بمساواة البتات أو بدقة عامة.

نطاقنا مصفوفات حقيقية صغيرة 2×2 وfloat64. لم نفحص دفعات أو مدخلات مركبة وغير منتهية أو keepdims أو مديات كبيرة أو جميع الخيارات، ولم نقس زمنًا أو ملكية ذاكرة. نكتب بجانب كل نتيجة شكل المدخل والخيار، ثم نراجع أي المرجعين يلائم السؤال.

المثالالافتراضي وfroالمصفوفة 2المتجه المسطح 2
A:5 و12131213
C:5 و0555

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

المراجع

  1. NumPy matrix_norm
  2. NumPy norm

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