math --- توابع ریاضی¶
این ماژول دسترسی به توابع و ثابتهای ریاضی رایج را فراهم میکند، از جمله آنهایی که در استاندارد C تعریف شدهاند.
این توابع نمیتوانند با اعداد مختلط استفاده شوند؛ اگر به پشتیبانی از اعداد مختلط نیاز دارید، از توابع همنام در ماژول cmath استفاده کنید. تمایز میان توابعی که از اعداد مختلط پشتیبانی میکنند و توابعی که پشتیبانی نمیکنند به این دلیل ایجاد شده است که بیشتر کاربران نمیخواهند آنقدر ریاضیات بیاموزند که برای درک اعداد مختلط لازم است. دریافت استثنا بهجای یک نتیجهی مختلط، تشخیص زودهنگام عدد مختلط غیرمنتظرهای را که بهعنوان پارامتر استفاده شده است ممکن میسازد، تا برنامهنویس بتواند تعیین کند که چگونه و چرا در وهلهی اول تولید شده است.
توابع زیر توسط این ماژول ارائه شدهاند. مگر آنکه صریحاً غیر از این ذکر شده باشد، تمام مقادیر بازگشتی از نوع float هستند.
توابع نظریهی اعداد |
|
تعداد راههای انتخاب k آیتم از n آیتم بدون تکرار و بدون ترتیب |
|
فاکتوریل n |
|
بزرگترین مقسومعلیه مشترک آرگومانهای عدد صحیح |
|
جذر صحیح عدد صحیح نامنفی n |
|
کمترین مضرب مشترک آرگومانهای عدد صحیح |
|
تعداد راههای انتخاب k آیتم از n آیتم بدون تکرار و با ترتیب |
|
محاسبات ممیز شناور |
|
سقف x، کوچکترین عدد صحیحی که بزرگتر یا مساوی x باشد |
|
مقدار مطلق x |
|
کف x، بزرگترین عدد صحیح کوچکتر یا مساوی x |
|
عملیات ضرب-جمع ادغامشده (fused multiply-add): |
|
باقیماندهی تقسیم |
|
بخش کسری و بخش صحیح x |
|
باقیماندهی x نسبت به y |
|
بخش عدد صحیح x |
|
توابع دستکاری اعداد ممیز شناور |
|
بزرگی (قدر مطلق) x با علامت y |
|
مانتیس و توان x |
|
بررسی کنید که آیا مقادیر a و b به یکدیگر نزدیک هستند |
|
بررسی میکند که x نه بینهایت است و نه NaN |
|
بررسی کنید که آیا x بینهایت مثبت یا منفی است |
|
بررسی کنید که آیا x یک NaN (نه یک عدد) است |
|
|
|
مقدار ممیز شناور steps گام پس از x به سمت y |
|
مقدار کمارزشترین بیت x |
|
توابع توان، نمایی و لگاریتمی |
|
ریشه سوم x |
|
e به توان x |
|
۲ به توان x |
|
e به توان x، منهای ۱ |
|
لگاریتم x در پایهی دادهشده (بهطور پیشفرض e) |
|
لگاریتم طبیعی 1+x (مبنای e) |
|
لگاریتم x در مبنای ۲ |
|
لگاریتم x در مبنای ۱۰ |
|
x به توان y |
|
ریشه دوم x |
|
توابع جمعبندی و حاصلضرب |
|
فاصله اقلیدسی بین دو نقطه p و q که بهصورت پیمایشپذیری از مختصات داده شدهاند |
|
مجموع مقادیر در پیمایشپذیر ورودی |
|
هنجار اقلیدسی یک پیمایشپذیر از مختصات |
|
حاصلضرب عناصر در iterable ورودی با مقدار start |
|
مجموع حاصلضربهای دو پیمایشپذیر p و q |
|
تبدیل زاویهای |
|
زاویهی x را از رادیان به درجه تبدیل میکند |
|
زاویهی x را از درجه به رادیان تبدیل میکند |
|
توابع مثلثاتی |
|
آرککسینوس x |
|
سینوس معکوس x |
|
آرکتانژانت x |
|
|
|
کسینوس x |
|
سینوس x |
|
تانژانت x |
|
توابع هذلولی |
|
کسینوس هذلولوی معکوس x |
|
سینوس هذلولوی معکوس x |
|
معکوس تانژانت هیپربولیک x |
|
کسینوس هذلولی x |
|
سینوس هیپربولیک x |
|
تانژانت هذلولی x |
|
توابع خاص |
|
تابع خطا در x |
|
تابع خطای مکمل در x |
|
تابع گاما در x |
|
لگاریتم طبیعی مقدار مطلق تابع گاما در x |
|
ثابتها |
|
π = 3.141592... |
|
e = 2.718281... |
|
τ = 2π = 6.283185... |
|
بینهایت مثبت |
|
"عدد نامعتبر" (NaN) |
|
توابع نظریه اعداد¶
- math.comb(n, k)¶
تعداد راههای انتخاب k آیتم از n آیتم بدون تکرار و بدون ترتیب را برمیگرداند.
هنگامی که
k <= nباشد، بهn! / (k! * (n - k)!)ارزیابی میشود و هنگامی کهk > nباشد، به صفر ارزیابی میشود.همچنین ضریب دوجملهای نیز نامیده میشود، زیرا معادل ضریب جملهی kاُم در بسط چندجملهایِ
(1 + x)ⁿاست.اگر هر یک از آرگومانها عدد صحیح نباشند،
TypeErrorپرتاب میشود. اگر هر یک از آرگومانها منفی باشند،ValueErrorپرتاب میشود.اضافه شده در نسخهی 3.8.
- math.factorial(n)¶
فاکتوریل عدد صحیح نامنفی n را برمیگرداند.
تغییر یافته در نسخهی 3.10: شناورهایی با مقادیر صحیح (مانند
5.0) دیگر پذیرفته نمیشوند.
- math.gcd(*integers)¶
بزرگترین مقسومعلیه مشترک آرگومانهای عدد صحیح مشخصشده را برمیگرداند. اگر هر یک از آرگومانها غیرصفر باشد، مقدار برگرداندهشده بزرگترین عدد صحیح مثبتی است که مقسومعلیه همه آرگومانها باشد. اگر همه آرگومانها صفر باشند، مقدار برگرداندهشده
0است.gcd()بدون آرگومان،0را برمیگرداند.اضافه شده در نسخهی 3.5.
تغییر یافته در نسخهی 3.9: پشتیبانی از تعداد دلخواهی از آرگومانها افزوده شد. پیشتر، تنها از دو آرگومان پشتیبانی میشد.
- math.isqrt(n)¶
ریشهی دوم صحیح عدد صحیح غیرمنفی n را برمیگرداند. این مقدار، جزء صحیح ریشهی دوم دقیق n است، یا بهطور معادل، بزرگترین عدد صحیح a است بهطوری که a² ≤ n.
برای برخی کاربردها، ممکن است مناسبتر باشد که کوچکترین عدد صحیح a را داشته باشیم، بهطوری که n ≤ a²، یا به عبارت دیگر سقف جذر دقیق n. برای n مثبت، این را میتوان با
a = 1 + isqrt(n - 1)محاسبه کرد.اضافه شده در نسخهی 3.8.
- math.lcm(*integers)¶
کوچکترین مضرب مشترک آرگومانهای عدد صحیح مشخصشده را برمیگرداند. اگر همه آرگومانها غیرصفر باشند، مقدار برگرداندهشده کوچکترین عدد صحیح مثبتی است که مضربی از همه آرگومانها باشد. اگر هر یک از آرگومانها صفر باشد، مقدار برگرداندهشده
0است.lcm()بدون آرگومان،1را برمیگرداند.اضافه شده در نسخهی 3.9.
- math.perm(n, k=None)¶
تعداد راههای انتخاب k آیتم از n آیتم بدون تکرار و با ترتیب را برمیگرداند.
هنگامی که
k <= nباشد، برابر باn! / (n - k)!است و هنگامی کهk > nباشد، برابر با صفر است.اگر k تعیین نشده باشد یا
Noneباشد، آنگاه k بهطور پیشفرض برابر n خواهد بود و تابعn!را برمیگرداند.اگر هر یک از آرگومانها عدد صحیح نباشند،
TypeErrorپرتاب میشود. اگر هر یک از آرگومانها منفی باشند،ValueErrorپرتاب میشود.اضافه شده در نسخهی 3.8.
محاسبات ممیز شناور¶
- math.ceil(x)¶
سقف x را برمیگرداند، یعنی کوچکترین عدد صحیحی که بزرگتر یا مساوی x است. اگر x شناور نباشد، به
x.__ceil__ارجاع داده میشود، که باید مقداری از نوعIntegralبرگرداند.
- math.fabs(x)¶
قدر مطلق x را برمیگرداند.
- math.floor(x)¶
کف x، یعنی بزرگترین عدد صحیح کوچکتر یا مساوی x را برمیگرداند. اگر x از نوع float نباشد، به
x.__floor__محول میشود، که باید مقداری از نوعIntegralبرگرداند.
- math.fma(x, y, z)¶
عملیات ضرب-جمع ادغامشده (Fused multiply-add).
(x * y) + zرا برمیگرداند، گویی با دقت و دامنهی بینهایت محاسبه شده باشد و سپس یک گرد کردن واحد روی آن به قالبfloatانجام شده باشد. این عملیات معمولاً دقت بهتری نسبت به عبارت مستقیم(x * y) + zارائه میدهد.این تابع از مشخصات عملیات fusedMultiplyAdd پیروی میکند که در استاندارد IEEE 754 توصیف شده است. این استاندارد یک حالت را بهصورت تعریفشده توسط پیادهسازی باقی گذاشته است، یعنی نتیجهی
fma(0, inf, nan)وfma(inf, 0, nan). در این حالتها،math.fmaیک NaN برمیگرداند و هیچ استثنایی را پرتاب نمیکند.اضافه شده در نسخهی 3.13.
- math.fmod(x, y)¶
باقیماندهی ممیز شناور
x / yرا، همانطور که توسط تابعfmod(x, y)کتابخانهی C سکو تعریفشده است، برمیگرداند. توجه داشته باشید که عبارتx % yدر پایتون ممکن است همان نتیجه را برنگرداند. منظور استاندارد C این است کهfmod(x, y)دقیقاً (از نظر ریاضی؛ با دقت نامتناهی) برابر باx - n*yبرای عدد صحیحی n باشد، بهگونهای که نتیجه همان علامت x را داشته باشد و قدر مطلق آن کمتر ازabs(y)باشد. در عوض،x % yدر پایتون نتیجهای با علامت y برمیگرداند و ممکن است برای آرگومانهای ممیز شناور بهطور دقیق قابل محاسبه نباشد. برای مثال،fmod(-1e-100, 1e100)برابر-1e-100است، اما نتیجهی-1e-100 % 1e100در پایتون1e100-1e-100است که نمیتوان آن را دقیقاً بهعنوان یک عدد ممیز شناور بازنمایی کرد و به مقدار شگفتآور1e100گرد میشود. به همین دلیل، معمولاً هنگام کار با اعداد ممیز شناور تابعfmod()ترجیح داده میشود، در حالی که هنگام کار با اعداد صحیح،x % yدر پایتون ترجیح داده میشود.
- math.modf(x)¶
بخش کسری و بخش صحیح x را برمیگرداند. هر دو نتیجه علامت x را دارند و از نوع float هستند.
توجه داشته باشید که
modf()الگوی فراخوانی/بازگشت متفاوتی نسبت به معادلهای C خود دارد: این تابع یک آرگومان میگیرد و جفتی از مقادیر را برمیگرداند، به جای اینکه دومین مقدار بازگشتی خود را از طریق یک «پارامتر خروجی» برگرداند (چنین چیزی در پایتون وجود ندارد).
- math.remainder(x, y)¶
باقیماندهی x نسبت به y بهسبک IEEE 754 را برمیگرداند. برای x متناهی و y متناهی غیرصفر، این مقدار، تفاضل
x - n*yاست، که در آنnنزدیکترین عدد صحیح به مقدار دقیق خارجقسمتx / yاست. اگرx / yدقیقاً در میانهی دو عدد صحیح متوالی باشد، نزدیکترین عدد صحیح زوج برایnاستفاده میشود. بنابراین باقیماندهیr = remainder(x, y)همواره شرطabs(r) <= 0.5 * abs(y)را برآورده میکند.موارد خاص از IEEE 754 پیروی میکنند: بهویژه،
remainder(x, math.inf)برای هر x متناهی برابر با x است، وremainder(x, 0)وremainder(math.inf, x)برای هر x که NaN نباشد،ValueErrorرا پرتاب میکنند. اگر نتیجهی عملیات باقیمانده صفر باشد، آن صفر همان علامت x را خواهد داشت.در سکوهای استفادهکننده از ممیز شناور دودویی IEEE 754، نتیجهی این عملیات همیشه بهطور دقیق قابل بازنمایی است: هیچ خطای گردکردنی ایجاد نمیشود.
اضافه شده در نسخهی 3.7.
- math.trunc(x)¶
x را با حذف بخش کسری برمیگرداند و بخش صحیح آن را باقی میگذارد. این گرد کردن به سمت ۰ است:
trunc()برای x مثبت معادلfloor()و برای x منفی معادلceil()است. اگر x از نوع float نباشد، بهx.__trunc__محول میشود، که باید یک مقدارIntegralبرگرداند.
برای توابع ceil()، floor() و modf()، توجه داشته باشید که همهی اعداد ممیز شناور با بزرگی کافی، اعداد صحیح دقیق هستند. شناورهای پایتون معمولاً بیش از ۵۳ بیت دقت ندارند (همانند نوع double پلتفرم C)، که در این صورت هر شناور x با abs(x) >= 2**52 لزوماً هیچ بیت کسری ندارد.
توابع دستکاری اعداد ممیز شناور¶
- math.copysign(x, y)¶
یک عدد اعشاری با بزرگی (قدر مطلق) x اما با علامت y برمیگرداند. در سکوهای پشتیبانیکننده از صفرهای علامتدار،
copysign(1.0, -0.0)مقدار -1.0 را برمیگرداند.
- math.frexp(x)¶
مانتیس و توان x را بهصورت جفت
(m, e)برمیگرداند. اگر x یک عدد متناهی و ناصفر باشد، آنگاه m یک عدد اعشاری با0.5 <= abs(m) < 1.0است و e یک عدد صحیح است، بهطوریکهx == m * 2**eدقیقاً برقرار باشد. در غیر این صورت،(x, 0)را برمیگرداند. این تابع برای «جدا کردن» نمایش داخلی یک عدد اعشاری بهشکلی قابلانتقال استفاده میشود.توجه داشته باشید که
frexp()الگوی فراخوانی/بازگشت متفاوتی نسبت به معادلهای C خود دارد: این تابع یک آرگومان میگیرد و یک جفت مقدار برمیگرداند، به جای اینکه دومین مقدار بازگشتی خود را از طریق یک «پارامتر خروجی» برگرداند (چنین چیزی در پایتون وجود ندارد).
- math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶
اگر مقادیر a و b به هم نزدیک باشند،
Trueو در غیر این صورتFalseبرمیگرداند.اینکه آیا دو مقدار نزدیک در نظر گرفته میشوند یا خیر، بر اساس رواداریهای مطلق و نسبی دادهشده تعیین میشود. اگر هیچ خطایی رخ ندهد، نتیجه بهصورت
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)خواهد بود.rel_tol تحمل نسبی است — این مقدار حداکثر اختلاف مجاز بین a و b، نسبت به بزرگترین قدر مطلقِ a یا b است. برای مثال، برای تنظیم تحمل ۵٪،
rel_tol=0.05را ارسال کنید. تحمل پیشفرض1e-09است، که تضمین میکند دو مقدار تا حدود ۹ رقم اعشاری یکسان هستند. rel_tol باید غیرمنفی و کمتر از1.0باشد.abs_tol تحمل مطلق است؛ مقدار پیشفرض آن
0.0است و باید غیرمنفی باشد. هنگامی کهxرا با0.0مقایسه میکنید،isclose(x, 0)بهصورتabs(x) <= rel_tol * abs(x)محاسبه میشود، که برای هرxغیرصفر و rel_tol کمتر از1.0،Falseاست. بنابراین یک آرگومان abs_tol مثبت و مناسب به فراخوانی اضافه کنید.مقادیر ویژهی IEEE 754 شامل
NaN،infو-infطبق قوانین IEEE پردازش میشوند. بهطور مشخص،NaNبه هیچ مقدار دیگری، از جملهNaN، نزدیک در نظر گرفته نمیشود.infو-infتنها به خودشان نزدیک در نظر گرفته میشوند.اضافه شده در نسخهی 3.5.
همچنین ملاحظه نمائید
PEP 485 -- تابعی برای آزمون برابری تقریبی
- math.isfinite(x)¶
اگر x نه بینهایت و نه NaN باشد،
Trueرا برمیگرداند و در غیر این صورتFalseرا برمیگرداند. (توجه داشته باشید که0.0متناهی در نظر گرفته میشود.)اضافه شده در نسخهی 3.2.
- math.isinf(x)¶
اگر x بینهایت مثبت یا منفی باشد،
Trueبرمیگرداند و در غیر این صورتFalseبرمیگرداند.
- math.isnan(x)¶
اگر x یک NaN (نه یک عدد) باشد،
Trueو در غیر این صورتFalseبرمیگرداند.
- math.nextafter(x, y, steps=1)¶
مقدار ممیز شناوری را برمیگرداند که steps گام بعد از x به سمت y قرار دارد.
اگر x برابر با y باشد، y را برمیگرداند، مگر اینکه steps صفر باشد.
مثالها:
math.nextafter(x, math.inf)به سمت بالا میرود: به سمت بینهایت مثبت.math.nextafter(x, -math.inf)به سمت پایین میرود: به سوی منفی بینهایت.math.nextafter(x, 0.0)به سمت صفر حرکت میکند.math.nextafter(x, math.copysign(math.inf, x))از صفر دور میشود.
همچنین ببینید
math.ulp().اضافه شده در نسخهی 3.9.
تغییر یافته در نسخهی 3.12: آرگومان steps افزوده شد.
- math.ulp(x)¶
مقدار کمارزشترین بیت شناور x را برمیگرداند:
اگر x یک NaN (عدد نامعتبر) باشد، x را برمیگرداند.
اگر x منفی باشد،
ulp(-x)را برمیگرداند.اگر x بینهایت مثبت باشد، x را برمیگرداند.
اگر x برابر با صفر باشد، کوچکترین شناور مثبت غیرنرمالشده (denormalized) قابلبازنمایی را برمیگرداند (کوچکتر از کمینه شناور مثبت نرمالشده (normalized)،
sys.float_info.min).اگر x برابر بزرگترین عدد اعشاری مثبت قابل نمایش باشد، مقدار کمارزشترین بیت x را برمیگرداند، بهگونهای که نخستین عدد اعشاری کوچکتر از x برابر
x - ulp(x)باشد.در غیر این صورت (x یک عدد متناهی مثبت است)، مقدار کمارزشترین بیت x را برمیگرداند، بهطوری که اولین عدد اعشاری بزرگتر از x برابر
x + ulp(x)باشد.
ULP مخفف «واحد در آخرین جایگاه» (Unit in the Last Place) است.
همچنین ببینید
math.nextafter()وsys.float_info.epsilon.اضافه شده در نسخهی 3.9.
توابع توان، نمایی و لگاریتمی¶
- math.cbrt(x)¶
ریشه سوم x را برمیگرداند.
اضافه شده در نسخهی 3.11.
- math.exp(x)¶
e به توان x را برمیگرداند، که در آن e = ۲٫۷۱۸۲۸۱... پایهی لگاریتم طبیعی است. این معمولاً دقیقتر از
math.e ** xیاpow(math.e, x)است.
- math.exp2(x)¶
مقدار 2 به توان x را برمیگرداند.
اضافه شده در نسخهی 3.11.
- math.expm1(x)¶
e به توان x، منهای ۱ را برمیگرداند. در اینجا، e مبنای لگاریتم طبیعی است. برای مقادیر شناور کوچک x، تفریق در
exp(x) - 1میتواند منجر شود به از دست رفتن قابلتوجه دقت; تابعexpm1()راهی برای محاسبه این مقدار با دقت کامل فراهم میکند:>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
اضافه شده در نسخهی 3.2.
- math.log(x[, base])¶
با یک آرگومان، لگاریتم طبیعی x (در مبنای e) را برمیگرداند.
با دو آرگومان، لگاریتم x را در base دادهشده برمیگرداند، که بهصورت
log(x)/log(base)محاسبه میشود.
- math.log1p(x)¶
لگاریتم طبیعی 1+x (مبنای e) را برمیگرداند. نتیجه به شیوهای محاسبه میشود که برای x نزدیک به صفر دقیق است.
- math.log2(x)¶
لگاریتم x در مبنای ۲ را بازمیگرداند. این معمولاً از
log(x, 2)دقیقتر است.اضافه شده در نسخهی 3.3.
همچنین ملاحظه نمائید
int.bit_length()تعداد بیتهای لازم برای نمایش یک عدد صحیح در مبنای دو را، بدون احتساب علامت و صفرهای ابتدایی، برمیگرداند.
- math.log10(x)¶
لگاریتم x در مبنای ۱۰ را برمیگرداند. این معمولاً دقیقتر از
log(x, 10)است.
- math.pow(x, y)¶
مقدار x به توان y را برمیگرداند. موارد استثنایی تا حد امکان از استاندارد IEEE 754 پیروی میکنند. بهویژه،
pow(1.0, x)وpow(x, 0.0)همیشه1.0را برمیگردانند، حتی وقتی x صفر یا NaN باشد. اگر هر دو x و y متناهی باشند، x منفی باشد و y عدد صحیح نباشد، آنگاهpow(x, y)تعریفنشده است وValueErrorرا پرتاب میکند.برخلاف عملگر توکار
**،math.pow()هر دو آرگومان خود را به نوعfloatتبدیل میکند. برای محاسبهی دقیق توانهای عدد صحیح، از**یا تابع توکارpow()استفاده کنید.تغییر یافته در نسخهی 3.11: برای سازگاری با IEEE 754، حالتهای خاص
pow(0.0, -inf)وpow(-0.0, -inf)تغییر داده شدند تا بهجای پرتابValueError،infرا برگردانند.
- math.sqrt(x)¶
ریشه دوم x را برمیگرداند.
توابع جمعبندی و حاصلضرب¶
- math.dist(p, q)¶
فاصله اقلیدسی بین دو نقطه p و q را برمیگرداند، که هر یک بهصورت دنبالهای (یا پیمایشپذیری) از مختصات داده شدهاند. دو نقطه باید بُعد یکسانی داشته باشند.
تقریباً معادل با:
sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
اضافه شده در نسخهی 3.8.
- math.fsum(iterable)¶
مجموع دقیق ممیز شناور مقادیر موجود در پیمایشپذیر را برمیگرداند. با پیگیری چندین مجموع جزئی میانی، از کاهش دقت جلوگیری میکند.
دقت الگوریتم به تضمینهای حساب IEEE-754 و حالت معمولی بستگی دارد که حالت گرد کردن آن نیمهزوج (half-even) است. در برخی ساختهای غیر ویندوزی، کتابخانهی C زیربنایی از جمع با دقت گسترده استفاده میکند و ممکن است گاهی یک مجموع میانی را دو بار گرد کند که باعث میشود کماهمیتترین بیت آن نادرست باشد.
برای بحث بیشتر و دو رویکرد جایگزین، ASPN cookbook recipes for accurate floating-point summation.
- math.hypot(*coordinates)¶
هنجار اقلیدسی را برمیگرداند،
sqrt(sum(x**2 for x in coordinates)). این، طول بردار از مبدأ تا نقطهای با مختصات دادهشده است.برای یک نقطهی دوبعدی
(x, y)، این معادل محاسبهی وتر یک مثلث قائمالزاویه با استفاده از قضیهی فیثاغورس است:sqrt(x*x + y*y).تغییر یافته در نسخهی 3.8: پشتیبانی از نقاط n-بعدی افزوده شد. پیشتر، تنها حالت دوبعدی پشتیبانی میشد.
تغییر یافته در نسخهی 3.10: دقت الگوریتم بهبود یافت، بهطوری که حداکثر خطا کمتر از ۱ ulp (واحد در آخرین جایگاه) است. در حالت معمولتر، نتیجه تقریباً همیشه بهدرستی با خطایی حداکثر ۱/۲ ulp گرد میشود.
- math.prod(iterable, *, start=1)¶
حاصلضرب تمام عناصر پیمایشپذیر ورودی را محاسبه میکند. مقدار پیشفرض start برای حاصلضرب
1است.هنگامی که پیمایشپذیر خالی باشد، مقدار شروع برگردانده میشود. این تابع بهطور خاص برای استفاده با مقادیر عددی در نظر گرفته شده است و ممکن است انواع غیرعددی را نپذیرد.
اضافه شده در نسخهی 3.8.
- math.sumprod(p, q)¶
مجموع حاصلضرب مقادیر دو پیمایشپذیر p و q را برمیگرداند.
در صورتی که ورودیها طول یکسانی نداشته باشند،
ValueErrorپرتاب میشود.تقریباً معادل با:
sum(map(operator.mul, p, q, strict=True))
برای ورودیهای اعشاری و ورودیهای مختلط صحیح/اعشاری، حاصلضربها و مجموعهای میانی با دقت گسترده محاسبه میشوند.
اضافه شده در نسخهی 3.12.
تبدیل زاویهای¶
- math.degrees(x)¶
زاویهی x را از رادیان به درجه تبدیل میکند.
- math.radians(x)¶
زاویهی x را از درجه به رادیان تبدیل میکند.
توابع مثلثاتی¶
- math.acos(x)¶
آرککسینوس x را بر حسب رادیان برمیگرداند. نتیجه بین
0وpiاست.
- math.asin(x)¶
آرکسینوس x را بر حسب رادیان بازمیگرداند. نتیجه بین
-pi/2وpi/2است.
- math.atan(x)¶
آرکتانژانت x را بر حسب رادیان برمیگرداند. نتیجه بین
-pi/2وpi/2است.
- math.atan2(y, x)¶
atan(y / x)را بر حسب رادیان برمیگرداند. نتیجه میان-piوpiقرار دارد. بردار از مبدأ تا نقطهی(x, y)در صفحه، این زاویه را با محور X مثبت میسازد. نکتهیatan2()این است که علامتهای هر دو ورودی برای آن مشخص هستند، بنابراین میتواند ربع صحیح زاویه را محاسبه کند. برای مثال،atan(1)وatan2(1, 1)هر دوpi/4هستند، اماatan2(-1, -1)برابر-3*pi/4است.
- math.cos(x)¶
کسینوس x بر حسب رادیان را برمیگرداند.
- math.sin(x)¶
سینوس x بر حسب رادیان را برمیگرداند.
- math.tan(x)¶
تانژانت x بر حسب رادیان را برمیگرداند.
توابع هذلولی¶
توابع هذلولی معادلهایی از توابع مثلثی هستند که به جای دایرهها، بر پایه هذلولیها قرار دارند.
- math.acosh(x)¶
کسینوس هذلولی معکوس x را برمیگرداند.
- math.asinh(x)¶
سینوس هیپربولیک معکوس x را برمیگرداند.
- math.atanh(x)¶
تانژانت هیپربولیک معکوس x را برمیگرداند.
- math.cosh(x)¶
کسینوس هیپربولیک x را برمیگرداند.
- math.sinh(x)¶
سینوس هیپربولیک x را برمیگرداند.
- math.tanh(x)¶
تانژانت هذلولی x را برمیگرداند.
توابع ویژه¶
- math.erf(x)¶
تابع خطا را در x برمیگرداند.
میتوان از تابع
erf()برای محاسبهی توابع آماری مرسوم مانند توزیع تجمعی نرمال استاندارد استفاده کرد:def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0
اضافه شده در نسخهی 3.2.
- math.erfc(x)¶
مقدار تابع خطای متمم را در x برمیگرداند. تابع خطای متمم به صورت
1.0 - erf(x)تعریف میشود. این تابع برای مقادیر بزرگ x استفاده میشود، جایی که تفریق از یک موجب از دست رفتن دقت (loss of significance) میشود.اضافه شده در نسخهی 3.2.
- math.lgamma(x)¶
لگاریتم طبیعی قدر مطلق تابع گاما در x را برمیگرداند.
اضافه شده در نسخهی 3.2.
ثابتها¶
- math.pi¶
ثابت ریاضی π = ۳.۱۴۱۵۹۲...، تا دقت دردسترس.
- math.e¶
ثابت ریاضی e = 2.718281...، تا دقت در دسترس.
- math.tau¶
ثابت ریاضی τ = ۶.۲۸۳۱۸۵...، تا دقت در دسترس. تاو یک ثابت دایره برابر با ۲π است، نسبت محیط دایره به شعاع آن. برای آموختن بیشتر دربارهی تاو، ویدیوی Vi Hart با عنوان Pi is (still) Wrong را تماشا کنید و با خوردن دو برابر پای، جشن روز تاو را آغاز کنید!
اضافه شده در نسخهی 3.6.
- math.inf¶
بینهایت مثبت از نوع ممیز شناور. (برای بینهایت منفی، از
-math.infاستفاده کنید.) معادل خروجیfloat('inf').اضافه شده در نسخهی 3.5.
- math.nan¶
یک مقدار «غیرعدد» (NaN) از نوع ممیز شناور. معادل خروجی
float('nan'). با توجه به الزامات استاندارد IEEE-754،math.nanوfloat('nan')برابر با هیچ مقدار عددی دیگری، از جمله خودشان، در نظر گرفته نمیشوند. برای بررسی اینکه آیا یک عدد NaN است یا نه، به جایisیا==از تابعisnan()برای آزمون NaN بودن استفاده کنید. مثال:>>> import math >>> math.nan == math.nan False >>> float('nan') == float('nan') False >>> math.isnan(math.nan) True >>> math.isnan(float('nan')) True
اضافه شده در نسخهی 3.5.
تغییر یافته در نسخهی 3.11: اکنون همواره در دسترس است.
ماژول math عمدتاً شامل پوششیهای نازک بر روی توابع کتابخانه ریاضی C پلتفرم است. رفتار در موارد استثنایی، در صورت مقتضی بودن، از پیوست F استاندارد C99 پیروی میکند. پیادهسازی فعلی برای عملیاتهای نامعتبر مانند sqrt(-1.0) یا log(0.0) (در مواردی که پیوست F استاندارد C99 توصیه میکند که عملیات نامعتبر یا تقسیم بر صفر اعلام شود) ValueError و برای نتایجی که سرریز میشوند (برای مثال، exp(1000.0)) OverflowError را پرتاب میکند. از هیچیک از توابع بالا NaN بازگردانده نمیشود، مگر اینکه یک یا چند مورد از آرگومانهای ورودی NaN باشند؛ در آن صورت، بیشتر توابع یک NaN برمیگردانند، اما (باز هم مطابق پیوست F استاندارد C99) استثناهایی برای این قاعده وجود دارد، برای مثال pow(float('nan'), 0.0) یا hypot(float('nan'), float('inf')).
توجه داشته باشید که پایتون هیچ تلاشی برای تمایز میان NaNهای سیگنالدهنده (signaling NaNs) و NaNهای ساکت (quiet NaNs) نمیکند، و رفتار برای NaNهای سیگنالدهنده همچنان نامشخص است. رفتار معمول این است که با همه NaNها مانند NaNهای ساکت رفتار شود.
همچنین ملاحظه نمائید
- ماژول
cmath نسخههایی از بسیاری از این توابع برای اعداد مختلط.