ثوابت جهانی و محاسبات پایهای
آشنایی با کتابخانه math، اعداد ثابت، ریشهیابی و تفاوت عملگرهای بومی با توابع استاندارد C
کتابخانه داخلی math یکی از حیاتیترین ابزارهای توسعهدهندگان پایتون در پروژههای علمی، مهندسی و گرافیکی است. این ماژول مجموعهای از پیشرفتهترین توابع ریاضی را که بر اساس استانداردهای زبان C کامپایل و بهینهسازی شدهاند، در اختیار شما قرار میدهد. توابع این ماژول بسیار سریعتر و امنتر از پیادهسازیهای دستی پایتون عمل میکنند.
در گام نخست، ماژول math مقادیر ثابت (Constants) دقیق و بینالمللی را مستقیماً در اختیار ما قرار میدهد تا از هاردکد کردن اعدادی مثل ۳.۱۴ جلوگیری کنیم:
math.pi | عدد ثابت پی (π). نسبت محیط دایره به قطر آن با بالاترین دقت اعشاری پشتیبانیشده توسط سختافزار (حدود 3.141592653589793). |
math.e | عدد ثابت اویلر (e). پایهی لگاریتم طبیعی و مبنای بررسی رشد نمایی پیوسته در علوم تجربی و مالی. |
math.tau | ثابت تاو (τ). دقیقاً معادل دو برابر عدد پی (2π). در فرمولهای فیزیکی و سیگنالها، کار با یک دایره کامل (τ) خوانایی فرمولها را بهشدت بالا میبرد. |
ریشهیابی و توانرسانی مهندسی
گرچه پایتون عملگر ** را برای توان و ریشه تعبیه کرده است، توابع ماژول math عملکرد متفاوتی در لایه رم کامپیوتر دارند:
math.sqrt(x) | جذر (رادیکال) مربع عدد x. خروجی این تابع همواره از نوع Float است. بسیار سریعتر از x ** 0.5 عمل میکند. |
math.cbrt(x) | ریشه سوم (کوبیک) عدد. اضافهشده در پایتون ۳.۱۱ که دقت بهتری نسبت به توان یکسوم دارد. |
math.pow(x, y) | محاسبه x به توان y. برخلاف عملگر **، این متد خروجی را پیش از بازگرداندن با دقت بالا به Float تبدیل میکند (مناسب برای گرافیک کامپیوتری، نامناسب برای اعداد صحیحِ غولآسا). |
math.isqrt(x) | محاسبهی جذر عدد به شکل صحیح (Integer). بخش اعشاری را سریعاً نادیده گرفته و برای اعداد صحیح غولپیکر (BigInt) که باعث سرریزِ حافظه (Overflow) در float میشوند، ۱۰۰٪ امن است. |
در پایتون، عملگر ** برای اعداد صحیح بسیار بزرگ (مثلاً ۲ به توان ۱۰ هزار) فوقالعاده عمل میکند، اما اگر در هوش مصنوعی یا فیزیک از math.pow استفاده کنید، چون خروجی را حتماً به فرمت ۶۴-بیتیِ Float تبدیل میکند، در اعداد بسیار عظیم با خطای OverflowError: math range error مواجه میشوید.