سطح مقدماتی (Beginner Level)
پایتون به صورت پیشفرض قابلیتهای ریاضی قدرتمندی دارد. در سطح مقدماتی، ابتدا با توابع داخلی (Built-in) که نیازی به import ندارند آشنا میشویم و سپس سراغ ماژول استاندارد math برای محاسبات رایج میرویم.
۱. توابع ریاضی داخلی (Built-in Math Functions)
این توابع همیشه در دسترس هستند و برای محاسبات سریع استفاده میشوند. مهمترین آنها abs (قدر مطلق)، round (گرد کردن) و pow (توان) هستند.
مثال اول: قدر مطلق و توان
تابع abs عدد منفی را مثبت میکند و pow عدد را به توان میرساند (مشابه عملگر **).
مثال دوم: گرد کردن اعداد (Round)
تابع round اعداد اعشاری را به نزدیکترین عدد صحیح (یا تعداد اعشار مشخص) گرد میکند.
۲. شروع کار با ماژول math
برای دسترسی به توابع پیشرفتهتر مثل رادیکال، سینوس یا ثابتهای ریاضی، باید ماژول math را وارد کنید.
# نحوه وارد کردن ماژول
import math
۳. گرد کردن پیشرفته (Ceil و Floor)
برخلاف round که به نزدیکترین عدد گرد میکند، ماژول math توابعی برای "همیشه گرد کردن به بالا" (ceil) و "همیشه گرد کردن به پایین" (floor) دارد.
مثال اول: تفاوت Ceil و Floor
مثال دوم: کاربرد عملی
فرض کنید میخواهید ۴۵ نفر را در ماشینهایی با ظرفیت ۴ نفر جا دهید. حتی اگر یک نفر باقی بماند، به یک ماشین کامل نیاز دارید (کاربرد ceil).
۴. جذر و ثابتهای ریاضی
تابع sqrt برای گرفتن جذر (ریشه دوم) و ثابتهای pi و e از پرکاربردترین ویژگیهای این ماژول هستند.
سطح پیشرفته (Professional Level)
در سطح حرفهای، با دقت محاسبات اعشاری (Floating Point Precision)، توابع ترکیبیاتی، و تفاوتهای ظریف توابع math با عملگرهای معمولی آشنا میشویم.
۱. مشکل مقایسه اعداد اعشاری و math.isclose
در برنامهنویسی، اعداد اعشاری (Float) دقت صددرصد ندارند. بنابراین مقایسه مستقیم آنها با == اغلب با شکست مواجه میشود. روش حرفهای استفاده از math.isclose است.
مثال اول: شکست در مقایسه مستقیم
مثال دوم: راه حل با isclose
۲. توابع ترکیبیاتی (Combinatorics)
برای محاسبات احتمال و آمار، توابع فاکتوریل (factorial)، ترکیب (comb) و جایگشت (perm) بسیار حیاتی هستند و از نوشتن حلقههای تکراری جلوگیری میکنند.
مثال اول: فاکتوریل و انتخاب
۳. جمع دقیق با math.fsum
تابع داخلی sum() برای لیستهایی از اعداد اعشاری ممکن است خطای گرد کردن (Rounding Error) ایجاد کند. math.fsum این خطاها را پیگیری کرده و نتیجه دقیقتری میدهد.
۴. کوتاه کردن عدد (Truncate)
تفاوت math.trunc() با floor() در اعداد منفی مشخص میشود. trunc فقط بخش اعشار را حذف میکند (به سمت صفر میرود)، در حالی که floor به سمت منفی بینهایت میرود.
۵. توابع لگاریتمی
پایتون از لگاریتم در مبناهای مختلف پشتیبانی میکند.
# ساختار کلی توابع لگاریتم
math.log(x) # لگاریتم طبیعی (پایه e)
math.log(x, base)# لگاریتم در پایه مشخص
math.log10(x) # لگاریتم در پایه 10
math.log2(x) # لگاریتم در پایه 2
مثال کاربردی: محاسبه بیتهای مورد نیاز
لگاریتم در پایه ۲ در علوم کامپیوتر برای محاسبه تعداد بیت مورد نیاز برای ذخیره یک عدد استفاده میشود.