Kahibaro
Discord Login Register

math

آشنایی عملی با کتابخانهٔ `math`

در این بخش با مهم‌ترین قابلیت‌های کتابخانهٔ استاندارد math در پایتون آشنا می‌شویم. این کتابخانه برای کار با محاسبات ریاضی «واقعی» (روی اعداد اعشاری float) طراحی شده است.

برای استفاده از آن باید در ابتدای فایل بنویسید:

import math

یا می‌توانید فقط تابع‌های خاص را وارد کنید:

from math import sqrt, pi

(تفاوت شیوه‌های import در فصل «وارد کردن ماژول‌ها» توضیح شده است.)


ثابت‌های مهم در `math`

کتابخانهٔ math چند مقدار ثابت پرکاربرد را در اختیار شما می‌گذارد:

مثال:

import math
print(math.pi)  # 3.1415926535...
print(math.e)   # 2.7182818284...

از این ثابت‌ها معمولاً در فرمول‌های هندسی و محاسبات علمی استفاده می‌شود، مثلاً مساحت دایره:

$$
\text{area} = \pi r^2
$$

import math
r = 5
area = math.pi * (r ** 2)
print(area)

ریشهٔ دوم و توان‌ها

`math.sqrt(x)` — ریشهٔ دوم

تابع sqrt ریشهٔ دوم عدد غیرمنفی را برمی‌گرداند:

import math
print(math.sqrt(9))   # 3.0
print(math.sqrt(2))   # 1.4142135...

اگر عدد منفی بدهید، خطا می‌گیرید:

math.sqrt(-1)  # ValueError

`math.pow(x, y)` در برابر عملگر `**`

هر دو برای توان استفاده می‌شوند:

import math
print(2 ** 3)        # 8
print(math.pow(2, 3)) # 8.0 (float)

در برنامه‌های معمولی، استفاده از ** کافی است؛ math.pow بیشتر در کدی استفاده می‌شود که از قبل بر پایهٔ math نوشته شده است.


گرد کردن و کار با کف و سقف

پایتون یک تابع round داخلی دارد، اما math توابع خاص‌تری ارائه می‌دهد:

`math.floor(x)` — کف (بزرگ‌ترین عدد صحیح کوچک‌تر یا مساوی)

import math
print(math.floor(3.9))   # 3
print(math.floor(-1.2))  # -2

`math.ceil(x)` — سقف (کوچک‌ترین عدد صحیح بزرگ‌تر یا مساوی)

import math
print(math.ceil(3.1))    # 4
print(math.ceil(-1.2))   # -1

تفاوت در اعداد منفی مهم است؛ floor همیشه به سمت «پایین» روی خط اعداد می‌رود و ceil به سمت «بالا».


قدر مطلق و علامت

تابع داخلی abs در خود پایتون وجود دارد، اما math هم تابع کمکی دارد:

import math
print(abs(-5))       # 5
print(math.fabs(-5)) # 5.0

در بیشتر مواقع abs کافی است.


توابع مثلثاتی

اگر با مثلثات آشنا هستید، math توابع استاندارد زیر را فراهم می‌کند:

نکتهٔ مهم: ورودی این توابع بر حسب رادیان است، نه درجه.

تبدیل درجه و رادیان

مثال:

import math
angle_deg = 30
angle_rad = math.radians(angle_deg)
print(math.sin(angle_rad))  # تقریباً 0.5
# برعکس
rad = math.pi / 2
print(math.degrees(rad))    # 90.0

لگاریتم‌ها

کتابخانهٔ math انواع مختلف لگاریتم را پشتیبانی می‌کند:

`math.log(x)` — لگاریتم طبیعی

لگاریتم بر پایهٔ $e$:

import math
print(math.log(math.e))  # تقریباً 1.0

`math.log10(x)` — لگاریتم بر پایهٔ ۱۰

import math
print(math.log10(100))   # 2.0

`math.log(x, base)` — لگاریتم با پایهٔ دلخواه

import math
print(math.log(8, 2))    # 3.0  (چون 2 به توان 3 می‌شود 8)

ورودی لگاریتم باید مثبت باشد، وگرنه خطا رخ می‌دهد.


توابع نمایی

`math.exp(x)`

مقدار $e^x$ را حساب می‌کند:

import math
print(math.exp(1))   # تقریباً 2.718...
print(math.exp(2))   # تقریباً 7.389...

گاهی می‌توان از ترکیب exp و log برای محاسبات علمی استفاده کرد.


توابع min/max ویژه: `math.fsum` و `math.prod`

پایتون به طور داخلی sum و از نسخه‌های جدیدتر math.prod را دارد، اما math یک نسخهٔ دقیق‌تر از جمع را ارائه می‌دهد:

`math.fsum(iterable)` — جمع دقیق‌تر اعداد اعشاری

برای لیست‌های بزرگ float، math.fsum نسبت به sum خطای اعشاری کمتری دارد:

import math
numbers = [0.1] * 1000000
print(sum(numbers))      # نتیجه ممکن است کمی خطا داشته باشد
print(math.fsum(numbers)) # نتیجه دقیق‌تر است

`math.prod(iterable)` — حاصل‌ضرب تمام اعضا

import math
nums = [1, 2, 3, 4]
print(math.prod(nums))   # 24

تابع‌های کمکی مفید

چند تابع عمومی دیگر در math:

`math.factorial(n)` — فاکتوریل

برای عدد صحیح غیرمنفی $n$:

$$
n! = 1 \times 2 \times 3 \times \dots \times n
$$

import math
print(math.factorial(5))  # 120

برای اعداد منفی یا اعشاری خطا می‌دهد.

`math.isfinite(x)`، `math.isinf(x)`، `math.isnan(x)`

این توابع برای بررسی وضعیت عدد به کار می‌روند (بیشتر در محاسبات خاص با float):

import math
x = float('inf')
y = float('nan')
print(math.isinf(x))   # True
print(math.isnan(y))   # True

مثال‌های کوچک کاربردی با `math`

مثال ۱: محاسبهٔ فاصلهٔ دو نقطه

دو نقطه در صفحه داریم: $(x_1, y_1)$ و $(x_2, y_2)$. فاصلهٔ بین آن‌ها:

$$
d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
$$

import math
x1, y1 = 0, 0
x2, y2 = 3, 4
dx = x2 - x1
dy = y2 - y1
distance = math.sqrt(dx*dx + dy*dy)
print(distance)  # 5.0

مثال ۲: تبدیل درجه به رادیان و محاسبهٔ سینوس

import math
deg = float(input("زاویه (درجه) را وارد کنید: "))
rad = math.radians(deg)
print("سینوس زاویه:", math.sin(rad))

نکات پایانی کار با `math`

Views: 4

Comments

Please login to add a comment.

Don't have an account? Register now!