قد تقرأ زاوية 180° من angle فتتصور عددًا مركبًا غير صفري على الجهة السالبة. لكن في تجربتنا أعطى أحد تمثيلات الصفر المركب الزاوية نفسها، مع مقدار يساوي صفرًا. سنفصل نتيجة الزاوية عن اختبار المقدار، ونتابع إشارتي الجزأين الحقيقي والتخيلي.
اقرأ الاتفاق والوحدة أولًا
تستخدم angle الجزأين التخيلي والحقيقي في حساب arctan2، وتتبع اتفاقها حين يكون المقدار صفرًا. افتراضيًا يكون العرض بالراديان، ومع deg=True يكون بالدرجات. لذلك نكتب الخيار إلى جانب الأرقام، ولا نعامل ظهور عدد للزاوية بوصفه اختبارًا مستقلًا لغياب الصفر. [1]
في اتفاق arctan2، يؤدي الجزء الأول الصفري بإشارته مع الجزء الثاني +0 إلى صفر بالجهة نفسها، ومع −0 إلى قيمة π بإشارة الجزء الأول. نحن نقرأ هذا الاتفاق لتفسير الناتج، ولم نستدع arctan2 مباشرة في الاختبار. [2]
تحسب absolute المقدار عنصرًا بعنصر، ويختصرها الاسم np.abs. وللمركب a+bi يكون المقدار √(a²+b²). نستخدم هذا الخرج إلى جانب الزاوية، بدل محاولة استنتاجه من علامة الزاوية أو حجمها وحدهما. [3]
أربعة أصفار ونتائج زاوية مختلفة
أنشأنا مصفوفة complex128 من ثمانية عناصر. الأربعة الأولى تحمل أزواج الجزأين الحقيقي والتخيلي بالترتيب: (−0.0,+0.0)، (−0.0,−0.0)، (+0.0,+0.0)، (+0.0,−0.0). استعملنا إنشاء complex بجزأين منفصلين، وحفظنا بايتات المدخل وإشاراته الفعلية.
في NumPy 2.3.5 على CPython 3.12.14 أعطى np.angle(z,deg=True) لهذه المواضع [180.0، −180.0، 0.0، −0.0]. وأعطى الطلب الافتراضي [3.141592653589793، −3.141592653589793، 0.0، −0.0]. كان الخرج float64.
في المقابل أعطى np.abs(z) مقدارًا يساوي صفرًا لكل واحد من الأصفار الأربعة، وأعطت np.equal(z,0) قيم True عندها. اختلاف علامات الصفر المخزنة لا يحول هذه المدخلات إلى أربعة أعداد مركبة مختلفة عدديًا في السجل.
قارن الزاوية مع تحكم غير صفري
أضفنا أربعة عناصر مستقلة: (+3,+0.0)، (+3,−0.0)، (−3,+0.0)، (−3,−0.0). نتائج الدرجات لهذه التحكّمات [0.0، −0.0، 180.0، −180.0]، لكن المقادير الأربعة تساوي 3، والمساواة بالصفر False.
إذن يشترك المدخل (−0.0,+0.0) والمدخل (−3,+0.0) في زاوية 180° بالتشغيل، بينما يختلف المقدار الصفري عن 3. الاستنتاج المحدد هو أن نتيجة الزاوية المعروضة لم تثبت أن مدخلها غير صفري.
تحققنا كذلك من بت إشارة نتائج الراديان، فميزنا +0.0 عن −0.0 في الخرج. ولم نرسم سهم اتجاه للأصفار أو نعد النتيجة قياسًا لحركة حقيقية. المثال يصف اتفاق دالة وتمثيلات مدخلاتها، لا يعيد تعريف اتجاه المتجه الصفري.

نطاق التشغيل والمرجع المستقل
بدلنا ترتيب الأصفار الأربعة بكل التبديلات الممكنة، وعددها 24، مع تثبيت التحكّمات الأربعة. اختلفت المتجهات في بايتات الإشارة والترتيب، لكنها لم تكن 24 متجهًا مختلفًا بحسب المساواة العددية؛ كل متجه يحمل ثمانية عناصر بالشكل (8,).
شغّلنا 48 استدعاء angle، نصفها بالراديان ونصفها بالدرجات، و24 لكل من abs وsignbit وequal. المجموع 120 استدعاء مسمى، مع 576 نتيجة عددية و384 منطقية محفوظة. بقيت بايتات المدخلات الأصلية ثابتة.
بنى المرجع توقع الإشارات من كلمتي الجزأين، والمقادير من أعدادنا المحورية. ولـπ استخدمنا صيغة ماشين: π=16 arctan(1/5)−4 arctan(1/239). [4] حسبنا المتسلسلتين بـDecimal بدقة عمل 100 رقم و200 حد لكل منهما، ثم حولنا المرجع إلى float للمقارنة.
لم يستدع المرجع angle أو arctan2 من NumPy، ولا math.atan2 لصنع التوقع. اقتصر النطاق على أصفار ذات إشارة وتحكّمات ±3 بمحور حقيقي؛ لا يشمل أرباعًا عامة، أو أنواعًا وأبعادًا أخرى، أو قيمًا غير منتهية، أو ضوضاء قياس، أو فك التفاف الطور. لا نعطي ضمانًا عامًا لكل نهاية في مجال الزاوية.
| الحقيقي | التخيلي | angle / deg=True | المقدار | يساوي صفرًا |
|---|---|---|---|---|
| −0.0 | +0.0 | 180.0 | 0.0 | True |
| −0.0 | −0.0 | −180.0 | 0.0 | True |
| +0.0 | +0.0 | +0.0 | 0.0 | True |
| +0.0 | −0.0 | −0.0 | 0.0 | True |
| −3.0 | +0.0 | 180.0 | 3.0 | False |
للتوسع: مقدار العدد المركب.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
