قد يغير تبديل a وb نتيجة isclose عندما يكون السماح النسبي غير صفري. الفرق بين العددين يظل نفسه، لكن حد القبول يعتمد على القيمة المرجعية. لذلك لا يكفي أن يقول المساعد إن رقمين متقاربان من دون تحديد اتجاه المقارنة وإعداداتها. هذا سؤال عن عقد أداة عددية، لا عن اختيار أي قياس يمثل الحقيقة.
الخلاصة السريعة
نعم، قد تختلف النتيجة عند تبديل المدخلين؛ في isclose يكون b مرجعا للجزء النسبي من حد القبول.
- للأعداد المنتهية، تقارن isclose الفرق المطلق بحد يساوي atol مضافا إليه rtol مضروبا في القيمة المطلقة لـb؛ القاعدة غير متماثلة. [1]
- في مثالنا التعليمي a = 9 وb = 10 ، مع rtol = 0.1 وatol = 0 ، الفرق 1 والحد 1 ؛ تقبل المقارنة المساواة بالحد.
- عند تبديل العددين من جديد تصبح b = 9 والحد 0.9 ؛ الفرق ما زال 1 ، لذلك يفشل القبول في الاتجاه المعاكس.
- احفظ القيمة المرجعية والوحدة والإعدادات؛ القبول العددي لا يحدد القياس الأدق، ولا تخلط هذا المثال بإعدادات افتراضية أو بيانات مفقودة.
أين تدخل القيمة المرجعية؟
توثق NumPy، للأعداد المنتهية، شرط الفرق المطلق الذي لا يتجاوز atol + rtol × abs(b). وتوضح أن b هي المرجع، ولذلك قد تختلف isclose(a,b) عن isclose(b,a). كما تحذر من ملاءمة atol الافتراضية عند مقارنة أعداد أصغر كثيرا من الواحد. [1]
سنراجع عددين منتهيين بالوحدة نفسها، وسنختار إعدادات معلنة بدل الاعتماد على الافتراضيات. نعني بالحد مقدار الفرق المقبول في اتجاه المقارنة المحدد. لا نفترض أن العدد الأول أو الثاني هو القياس الصحيح لمجرد موضعه في الاستدعاء.
كيف ينجح اتجاه المقارنة الأول؟
نضع a = 9 وb = 10 ، ونختار لأغراض التعليم rtol = 0.1 وatol = 0. هذه ليست توصية عامة لتقييم نماذج أو قبول قياسات. الفرق المطلق بين 9 و 10 هو 1 ، والحد النسبي المرجعي هو 0.1 × 10 ، أي 1.
لأن الفرق يساوي الحد، يحقق شرط لا يتجاوز. إذا طلب المساعد الحكم على هذه البطاقة وحدها، فالإجابة قبول في الاتجاه الذي جعل 10 مرجعا. لا يكفي ذكر الأعداد 9 و 10 في تعليق عام ثم حذف الإعدادات من النتيجة؛ هي جزء من تعريف القبول.
ما الذي يتغير حين نعكس المدخلين؟
نبدأ مقارنة ثانية بالإعدادات نفسها، ونضع a = 10 وb = 9. الفرق المطلق ما زال 1 ؛ لم تتغير المسافة العددية بين الرقمين. لكن الحد صار 0.1 × 9 ، أي 0.9 ، لأن المرجع تغير.
إذن لا يتحقق شرط القبول: 1 أكبر من 0.9. لا تناقض بين النتيجتين؛ كل واحدة تسأل عن فرق نسبة إلى مرجع مختلف. وقد تختفي هذه المشكلة في سياسة أخرى تجعل rtol صفرا وحدا مطلقا ثابتًا، لكن لا تستبدل بتلك السياسة إعدادات بطاقتنا من دون التصريح بالتغيير.
ماذا تحفظ مع جواب المساعد؟
اكتب العددين بالترتيب الذي استعملته الأداة، وحدد أيهما المرجع، ووحدتهما، وrtol وatol. واحتفظ بالفرق والحد المحسوبين حتى يستطيع القارئ فهم اختلاف الاتجاهين. عند مقارنة أرقام في وحدات مختلفة، يلزم أولا تحديد العلاقة بين الوحدات؛ لا يشرح قبول أداة عددية اختلاف المعنى.
ولا تجعل النجاح في هذه المقارنة حكمًا على صحة القياس أو على أداء نموذج كامل. حالة ب مفقودة خارج المثال المنتهي المعلن، وليست فرصة لاختيار 9 أو 10 مرجعا بالتخمين. الحسابات هنا يدوية؛ لم نشغل NumPy، ولم نجرب إعدادا افتراضيا أو نقس دقة مشروع.
المصادر ومتابعة القراءة
- NumPy isclose (يفتح في نافذة جديدة)numpy.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
