انجام عملیات های ریاضی با کتابخانه math پایتون
در این مقاله، با کتابخانه math پایتون آشنا خواهید شد. محاسبات ریاضی بخش مهمی از توسعه پایتون هستند. چه بر روی یک پروژه علمی، یک برنامه مالی یا هر نوع برنامه نویسی دیگری کار کنید، نمی توانید از نیاز به ریاضی فرار کنید. کتابخانه math پایتون به طور خاص برای عملیات ریاضی سطح بالا طراحی شده است.
# ماژول math پایتون
ماژول math پایتون یک کتابخانه مهم است که برای انجام عملیات های ریاضی طراحی شده است. ماژول math در کتابخانه استاندارد پایتون گنجانده شده است و برای استفاده از آن نیازی به نصب چیزی ندارید. از آنجایی که ماژول math در CPython نوشته شده است، توابع آن بسیار کارآمد بوده و با استاندارد C مطابقت دارد.
ماژول math پایتون به شما این امکان را می دهد که محاسبات ریاضی رایج و مفید را در برنامه خود انجام دهید. در اینجا چند کاربرد عملی برای ماژول math آورده شده است:
- محاسبه ترکیبات و جایگشت ها با استفاده از فاکتوریل
- محاسبه ارتفاع یک قطب با استفاده از توابع مثلثاتی
- محاسبه واپاشی رادیواکتیو با استفاده از تابع نمایی
- محاسبه منحنی پل معلق با استفاده از توابع هذلولی
- حل معادلات درجه دوم
- شبیه سازی توابع تناوبی مانند امواج صوتی و نوری با استفاده از توابع مثلثاتی
از آنجایی که ماژول math در نسخه استاندارد پایتون وجود دارد، لازم نیست آن را جداگانه نصب کنید. برای استفاده از آن فقط کافیست ماژول را وارد کنید:
>>> import math
شما می توانید ماژول math پایتون را با استفاده از دستور بالا وارد کنید. پس از وارد کردن، می توانید بلافاصله از آن استفاده کنید.
# توابع کتابخانه math پایتون
در اینجا لیستی از تمام توابع و ویژگی های تعریف شده در ماژول ریاضی پایتون با توضیح مختصری در مورد آنچه انجام می دهند آمده است.
تابع | توضیح |
---|---|
ceil(x) | کوچکترین عدد صحیح بزرگتر یا مساوی x را برمی گرداند. |
copysign(x, y) | x را با علامت y برمی گرداند |
fabs(x) | مقدار مطلق x را برمیگرداند |
factorial(x) | فاکتوریل x را برمی گرداند |
floor(x) | بزرگترین عدد صحیح کوچکتر یا مساوی x را برمی گرداند |
fmod(x, y) | وقتی x بر y تقسیم شود، باقیمانده را برمیگرداند |
frexp(x) | مانتیس و توان x را به عنوان جفت (m, e) برمیگرداند. |
fsum(iterable) | یک مجموع ممیز شناور دقیق از مقادیر در تکرارپذیر را برمیگرداند |
isfinite(x) | اگر x نه بی نهایت باشد و نه یک NaN (عدد نیست) True را برمی گرداند. |
isinf(x) | اگر x یک بی نهایت مثبت یا منفی باشد، True را برمی گرداند |
isnan(x) | اگر x یک NaN باشد، True را برمیگرداند |
ldexp(x, i) | x * (2**i) را برمیگرداند |
modf(x) | قسمت های کسری و صحیح x را برمی گرداند |
trunc(x) | مقدار عدد صحیح کوتاه شده x را برمی گرداند |
exp(x) | e**x را برمی گرداند |
expm1(x) | e**x - 1 را برمی گرداند |
log(x[, b]) | لگاریتم x را به پایه b برمیگرداند (پیشفرض e) |
log1p(x) | لگاریتم طبیعی 1+x را برمیگرداند |
log2(x) | لگاریتم پایه 2 x را برمیگرداند |
log10(x) | لگاریتم پایه 10 x را برمیگرداند |
pow(x, y) | x را به توان y برمیگرداند |
sqrt(x) | جذر x را برمی گرداند |
acos(x) | کسینوس قوس x را برمیگرداند |
asin(x) | سینوس قوس x را برمیگرداند |
atan(x) | مماس قوس x را برمیگرداند |
atan2(y, x) | atan(y / x) را برمی گرداند |
cos(x) | کسینوس x را برمیگرداند |
hypot(x, y) | هنجار اقلیدسی را برمیگرداند، sqrt(x*x + y*y) |
sin(x) | سینوس x را برمی گرداند |
tan(x) | مماس x را برمیگرداند |
degrees(x) | زاویه x را از رادیان به درجه تبدیل می کند |
radians(x) | زاویه x را از درجه به رادیان تبدیل می کند |
acosh(x) | کسینوس هذلولی معکوس x را برمیگرداند |
asinh(x) | سینوس هذلولی معکوس x را برمیگرداند |
atanh(x) | مماس هذلولی معکوس x را برمیگرداند |
cosh(x) | کسینوس هذلولی x را برمیگرداند |
sinh(x) | کسینوس هذلولی x را برمیگرداند |
tanh(x) | مماس هذلولی x را برمیگرداند |
erf(x) | تابع خطا را در x برمی گرداند |
erfc(x) | تابع خطای مکمل را در x برمیگرداند |
gamma(x) | تابع گاما را در x برمیگرداند |
lgamma(x) | لگاریتم طبیعی قدر مطلق تابع گاما را در x برمیگرداند |
# عدد بینهایت در پایتون
بی نهایت(infinity) یک عدد تعریف نشده است که می تواند منفی یا مثبت باشد. در پایتون هیچ روشی برای نمایش بی نهایت به عنوان یک عدد صحیح وجود ندارد. بی نهایت را نمی توان با عدد تعریف کرد.
هنگامی که می خواهید یک مقدار معین را با یک مقدار حداکثر یا حداقل مطلق مقایسه کنید، می توانید از بی نهایت استفاده کنید. مقادیر بی نهایت مثبت و منفی در پایتون به شرح زیر است:
>>> math.inf
inf
>>> -math.inf
-inf
بی نهایت یک مقدار عددی نیست. در عوض، به عنوان math.inf تعریف شده است. پایتون این ثابت را در نسخه 3.5 به عنوان معادل float("inf") معرفی کرد:
>>> float("inf") == math.inf
True
هر دو float("inf") و math.inf مفهوم بی نهایت را نشان می دهند و math.inf را بزرگتر از هر مقدار عددی می کنند:
>>> x = 1e308
>>> math.inf > x
True
به طور مشابه، بینهایت منفی کوچکتر از هر مقدار است:
>>> y = -1e308
>>> y > -math.inf
True
# مقدار NaN در پایتون
Not a number، یا NaN، واقعاً یک مفهوم ریاضی نیست. در زمینه علوم کامپیوتر به عنوان ارجاع به مقادیری که عددی نیستند سرچشمه گرفته است. یک مقدار NaN می تواند به دلیل ورودی های نامعتبر باشد، یا می تواند نشان دهد که متغیری که باید عددی باشد توسط کاراکترها یا نمادهای متنی خراب شده است.
می توانید مقدار NaN را در زیر مشاهده کنید:
>>> math.nan
nan
NaN یک مقدار عددی نیست. می توانید ببینید که مقدار math.nan برابر nan است، همان مقدار float("nan").
# عدد پی (pi) در پایتون
عدد پی (π) نسبت محیط دایره (c) به قطر آن (d) است:
π = c/d
این نسبت برای همه دایره ها همیشه یکسان است.
پی یک عدد غیر منطقی است، به این معنی که نمی توان آن را به عنوان یک کسر ساده بیان کرد. بنابراین عدد پی دارای بی نهایت رقم اعشار است، اما می توان آن را 22/7 یا 3.141 تقریب زد.
در پایتون میتوانید به صورت زیر به عدد پی دسترسی پیدا کنید:
>>> math.pi
3.141592653589793
همانطور که می بینید، مقدار عدد پی در پایتون با پانزده رقم اعشار نمایش داده می شود. تعداد ارقام ارائه شده به کامپایلر C بستگی دارد. پایتون پانزده رقم اول را به طور پیشفرض چاپ میکند و math.pi همیشه یک مقدار float را برمیگرداند.
چه زمانی عدد پی میتواند برای شما مفید باشد؟ می توانید محیط یک دایره را با استفاده از 2πr محاسبه کنید، جایی که r شعاع دایره است:
>>> r = 3
>>> circumference = 2 * math.pi * r
>>> f"Circumference of a Circle = 2 * {math.pi:.4} * {r} = {circumference:.4}"
'Circumference of a Circle = 2 * 3.142 * 3 = 18.85'
برای محاسبه محیط دایره می توانید از math.pi استفاده کنید. همچنین می توانید مساحت یک دایره را با استفاده از فرمول πr² به صورت زیر محاسبه کنید:
>>> r = 5
>>> area = math.pi * r * r
>>> f"Area of a Circle = {math.pi:.4} * {r} * {r} = {area:.4}"
'Area of a Circle = 3.142 * 5 * 5 = 78.54'
برای محاسبه مساحت و محیط دایره می توانید از math.pi استفاده کنید. وقتی در حال انجام محاسبات ریاضی با پایتون هستید و با فرمولی مواجه میشوید که از π استفاده میکند، بهترین روش استفاده از مقدار pi است که توسط ماژول ریاضی بهجای کدگذاری سختافزاری مقدار داده شده است.
# محاسبه فاکتوریل در پایتون
ممکن است قبلا عبارات ریاضی مانند !7 یا !4 را دیده باشید. علامت تعجب به این معنی نیست که اعداد هیجان زده هستند. علامت "!" نماد فاکتوریل است. فاکتوریل ها در یافتن جایگشت ها یا ترکیب ها استفاده می شوند. شما می توانید فاکتوریل یک عدد را با ضرب تمام اعداد صحیح از عدد انتخاب شده به 1 تعیین کنید.
جدول زیر مقادیر فاکتوریل 4، 6 و 7 را نشان می دهد:
نماد | شکل خواندنی | عبارت | نتیجه |
---|---|---|---|
4! | فاکتوریل عدد 4 | 4*3*2*1 | 24 |
6! | فاکتوریل عدد 6 | 6*5*4*3*2*1 | 720 |
7! | فاکتوریل عدد 7 | 7*6*5*4*3*2*1 | 5040 |
از جدول می بینید که فاکتوریل چهار، با ضرب دامنه اعداد صحیح از 4 به 1، مقدار 24 را به دست می دهد. برای به دست آوردن فاکتوریل در پایتون میتوانید از یکی از روش های زیر استفاده کنید:
- حلقه for
- تابع بازگشتی
- تابع math.factorial
با این حال، پیادهسازی توابع خودتان فقط برای بدست آوردن فاکتوریل یک عدد زمانبر و ناکارآمد است. روش بهتر استفاده از math.factorial است. در اینجا نحوه یافتن فاکتوریل یک عدد با استفاده از math.factorial آمده است:
>>> math.factorial(7)
5040
این روش خروجی مورد نظر را با حداقل مقدار کد برمی گرداند. تابع factorial فقط مقادیر صحیح مثبت را می پذیرد. اگر سعی کنید یک مقدار منفی وارد کنید، یک ValueError دریافت خواهید کرد:
>>> math.factorial(-5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: factorial() not defined for negative values
تابع factorial اعداد اعشاری نیز نمی پذیرد:
>>> math.factorial(4.3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: factorial() only accepts integral values
نه تنها تابع factorial سریعتر از روش های دیگر است، بلکه پایدارتر است. هنگامی که تابع خود را پیاده سازی می کنید، باید به طور صریح برای موارد خطا مانند مدیریت اعداد منفی یا اعشاری کدنویسی کنید. یک اشتباه در پیاده سازی می تواند منجر به باگ شود. اما هنگام استفاده از factorial، لازم نیست نگران خطا باشید زیرا این تابع همه آنها را مدیریت می کند. بنابراین، بهترین روش استفاده از factorial است.
# گرد کردن اعداد به سمت بالا با تابع ceil
تابع ceil برای گرد کردن اعداد به سمت بالا استفاده میشود. این تابع کوچکترین عدد صحیح را که بزرگتر یا مساوی با عدد داده شده است برمی گرداند. اگر عدد اعشاری مثبت یا منفی باشد، تابع مقدار صحیح بعدی را بزرگتر از مقدار داده شده برمی گرداند.
به عنوان مثال، ورودی 5.43 مقدار 6 را برمی گرداند و ورودی 12.43- مقدار 12- را برمی گرداند. تابع ceil می تواند اعداد حقیقی مثبت یا منفی را به عنوان مقادیر ورودی بگیرد و همیشه یک مقدار صحیح برمی گرداند.
اگر یک عدد صحیح وارد کنید، تابع ceil پایتون همان عدد را برمیگرداند:
>>> math.ceil(6)
6
>>> math.ceil(-11)
-11
وقتی مقدار مثبت (4.23) باشد، تابع عدد صحیح بعدی را بزرگتر از مقدار (5) برمی گرداند. هنگامی که مقدار منفی است (11.453-)، تابع نیز عدد صحیح بعدی را بزرگتر از مقدار (11-) برمی گرداند.
اگر مقداری را وارد کنید که عدد نباشد، تابع یک TypeError برمی گرداند:
>>> math.ceil("x")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be real number, not str
باید یک عدد به تابع ceil وارد کنید. اگر سعی کنید مقدار دیگری را وارد کنید، یک TypeError دریافت خواهید کرد.
# گرد کردن اعداد به سمت پایین با تابع floor
تابع floor برای گرد کردن اعداد به سمت پایین استفاده میشود. تابع floor نزدیکترین مقدار صحیح را که کمتر یا مساوی با عدد داده شده است برمی گرداند. این تابع برخلاف ceil رفتار می کند. به عنوان مثال، ورودی 8.72 به 8 تبدیل شده و ورودی 12.34- به 13- تبدیل میشود. تابع floor پایتون می تواند اعداد مثبت یا منفی را به عنوان ورودی بگیرد و یک مقدار صحیح برمی گرداند.
اگر یک عدد صحیح وارد کنید، تابع همان مقدار را برمی گرداند:
>>> math.floor(4)
4
>>> math.floor(-17)
-17
مانند تابع ceil، وقتی ورودی floor یک عدد صحیح باشد، نتیجه همان عدد ورودی خواهد بود. خروجی تنها زمانی با ورودی متفاوت است که مقادیر اعشاری را وارد کنید:
>>> math.floor(5.532)
5
>>> math.floor(-6.432)
-7
وقتی یک مقدار اعشاری مثبت (5.532) وارد میکنید، نزدیکترین عدد صحیح را که کمتر از عدد ورودی (5) است را برمیگرداند. اگر یک عدد منفی (6.432-) وارد کنید، آنگاه کمترین مقدار صحیح بعدی (7-) را برمی گرداند.
اگر سعی کنید مقداری را وارد کنید که عدد نیست، تابع یک TypeError برمیگرداند:
>>> math.floor("x")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be real number, not str
شما نمی توانید مقادیر غیر عددی را به عنوان ورودی به تابع floor پایتون بدهید. انجام این کار منجر به TypeError می شود.
# حذف مقدار اعشاری از اعداد با تابع truc پایتون
وقتی عددی با نقطه اعشار به دست می آورید، ممکن است بخواهید فقط قسمت صحیح را نگه دارید و قسمت اعشاری را حذف کنید. ماژول math پایتون تابعی به نام trunc دارد که به شما امکان می دهد این کار را انجام دهید.
حذف مقدار اعشار نوعی گرد کردن است. با trunc، اعداد منفی همیشه به سمت بالا به سمت صفر و اعداد مثبت همیشه به سمت پایین به سمت صفر گرد می شوند.
در اینجا تابع trunc اعداد مثبت یا منفی را گرد می کند:
>>> math.trunc(12.32)
12
>>> math.trunc(-43.24)
-43
همانطور که می بینید، 12.32 به سمت پایین به سمت 0 گرد می شود که نتیجه 12 را می دهد. به همین ترتیب، 43.24- به سمت بالا به سمت 0 گرد می شود، که مقدار 43- را می دهد. تابع trunc پایتون بدون در نظر گرفتن مثبت یا منفی بودن عدد همیشه به سمت صفر گرد می شود.
هنگامی که با اعداد مثبت سروکار داریم، trunc مانند floor عمل میکند:
>>> math.trunc(12.32) == math.floor(12.32)
True
تابع trunc پایتون برای اعداد مثبت مانند floor رفتار می کند. همانطور که می بینید، مقدار بازگشتی هر دو تابع یکسان است.
اما هنگام کار با اعداد منفی، تابع trunc همانند ceil رفتار میکند:
>>> math.trunc(-43.24) == math.ceil(-43.24)
True
مقادیر بازگشتی هر دو تابع یکسان است.
ارسال نظر