تصویر شاخص نوشته: چرا تقسیم بر صفر جواب ندارد؟

چرا تقسیم بر صفر جواب ندارد؟

۹ مرداد ۱۴۰۵ مبانی ریاضی

یکی از اولین چیزهایی که در ریاضی به ما گفتند این بود: «بر صفر تقسیم نکن.» و تقریباً هیچ‌وقت نگفتند چرا. همین‌طور ماند: یک قاعده که حفظ کردیم، بدون اینکه بدانیم از کجا آمده. حالا اگر بپرسی «خب چرا؟»، معمولاً جوابی می‌گیری که یا دور می‌زند («چون تعریف نشده») یا اشتباه است («چون جوابش بی‌نهایت است»).

جوابِ واقعی سخت نیست و هیچ ریاضیِ پیشرفته‌ای لازم ندارد. فقط باید یادمان بیاید تقسیم اصلاً یعنی چه.

تقسیم یعنی چه؟

دو راهِ درست برای فهمیدنِ تقسیم هست و هر دو به یک جا می‌رسند.

راه اول — چند تا جا می‌شود؟ وقتی می‌پرسی 12 ÷ 4، در واقع داری می‌پرسی «چند تا ۴ داخلِ ۱۲ جا می‌شود؟» یکی برمی‌داری، دو تا، سه تا — رسیدی به ۱۲. جواب ۳ است.

حالا همین سؤال را با صفر بپرس: «چند تا صفر داخلِ ۱۲ جا می‌شود؟» یک صفر برمی‌داری: هنوز سرِ جای اولی. صد تا برمی‌داری: هنوز همان‌جا. یک میلیون تا: باز همان‌جا. هرقدر صفر روی هم بگذاری، هیچ‌وقت به ۱۲ نمی‌رسی. مسئله این نیست که جواب خیلی بزرگ است؛ مسئله این است که هیچ عددی جواب نیست. کاری که خواستی انجام بدهی اصلاً انجام‌شدنی نیست.

راه دوم — تقسیم، وارونهٔ ضرب است. این دقیق‌ترین جواب است. چرا 12 ÷ 4 = 3؟ چون 3 × 4 = 12. تقسیم فقط دارد سؤالِ ضرب را برعکس می‌پرسد: «چه عددی ضرب در ۴ می‌شود ۱۲؟»

پس 12 ÷ 0 یعنی: «چه عددی ضرب در صفر می‌شود ۱۲؟» و اینجا کار تمام است — چون هر عددی که ضرب در صفر شود، صفر می‌شود. ۵ ضرب در صفر: صفر. یک میلیارد ضرب در صفر: صفر. هیچ عددی در کلِ ریاضیات وجود ندارد که ضرب در صفر شود ۱۲. سؤال جواب ندارد، و ریاضی به‌جای اینکه جوابِ الکی بسازد، صادقانه می‌گوید تعریف‌نشده.

ماشین‌حساب که Error می‌دهد، دارد ناتوانی‌اش را اعتراف نمی‌کند. دارد درست‌ترین کارِ ممکن را می‌کند: نبودِ جواب را نبودِ جواب گزارش می‌کند.

«ولی جوابش بی‌نهایت است، نه؟»

این رایج‌ترین جوابِ غلط است و جالب اینجاست که چرا غلط است — چون از یک مشاهدهٔ درست می‌آید.

مشاهدهٔ درست: هرچه مقسوم‌علیه را کوچک‌تر کنی، جواب بزرگ‌تر می‌شود. 1 ÷ 0.1 = 10. 1 ÷ 0.01 = 100. 1 ÷ 0.001 = 1000. دارد به‌سمت بی‌نهایت می‌رود. تا اینجا کاملاً درست است.

حالا از سمت دیگر بیا — با عددهای منفیِ کوچک، که آن‌ها هم دارند به صفر نزدیک می‌شوند: 1 ÷ (-0.1) = -10. 1 ÷ (-0.01) = -100. 1 ÷ (-0.001) = -1000. این یکی دارد به‌سمت منفیِ بی‌نهایت می‌رود.

پس وقتی از راست به صفر نزدیک می‌شوی جواب به بی‌نهایت میل می‌کند، و وقتی از چپ نزدیک می‌شوی به منفیِ بی‌نهایت. دو مسیر، دو مقصدِ کاملاً متضاد. عددی که هم‌زمان هم بی‌نهایتِ مثبت باشد هم بی‌نهایتِ منفی وجود ندارد. برای همین 1 ÷ 0 بی‌نهایت نیست؛ اصلاً هیچ‌چیز نیست.

و «صفر تقسیم بر صفر» چه؟

این یکی فرق دارد، و قاطی‌کردنش با قبلی خطای رایجی است.

باز از وارونهٔ ضرب استفاده کن: 0 ÷ 0 یعنی «چه عددی ضرب در صفر می‌شود صفر؟» و جواب این است: هر عددی. ۳ ضرب در صفر صفر است. ۷ ضرب در صفر هم صفر است. منفیِ نُه هم همین‌طور.

پس مشکلِ 12 ÷ 0 این بود که هیچ جوابی ندارد، و مشکلِ 0 ÷ 0 برعکس است: بی‌شمار جواب دارد. و وقتی همه‌چیز جواب باشد، هیچ‌کدام جوابِ مشخص نیست. ریاضی به این حالت می‌گوید مبهم، در برابرِ تعریف‌نشده. هر دو بن‌بست‌اند، ولی از دو دلیلِ متضاد.

چرا این فقط یک نکتهٔ مدرسه‌ای نیست

وقتی برنامه می‌نویسی همین قاعده به شکلِ خطای واقعی برمی‌گردد. تقسیمِ عددِ صحیح بر صفر در بیشترِ زبان‌ها برنامه را می‌شکند، و در حسابِ اعشاری چیزی برمی‌گردد به‌اسمِ NaN یعنی «عدد نیست» — که بی‌سروصدا در محاسبه‌های بعدی پخش می‌شود و کلِ نتیجه را خراب می‌کند بدون اینکه جایی داد بزند.

و این در یادگیریِ ماشین یک منبعِ واقعیِ اشکال است: هر جا میانگین می‌گیری، مخرج تعدادِ نمونه‌هاست؛ اگر دسته‌ای خالی از آب دربیاید، مخرج صفر می‌شود و مدل به‌جای خطا دادن، عددِ بی‌معنا تولید می‌کند. کسی که فهمیده باشد چرا تقسیم بر صفر جواب ندارد، این باگ را زودتر می‌بیند.

یک قاعده که فهمیده‌ای، دیگر حفظ‌کردنی نیست

«بر صفر تقسیم نکن» تا وقتی یک دستورِ بی‌دلیل است، چیزی است که فراموش می‌شود. ولی وقتی یک بار دیدی که «چند تا صفر داخلِ ۱۲ جا می‌شود؟» سؤالی است که جواب ندارد، دیگر لازم نیست یادت بماند — نمی‌توانی فراموشش کنی.

خودآموزِ ریشه کلاً روی همین ساخته شده: هیچ قاعده‌ای بدونِ دلیل. از «عدد یعنی چه» شروع می‌شود و به همان ریاضی‌ای می‌رسد که هوش مصنوعی با آن آموزش می‌بیند. دو ترمِ اولش رایگان است.