به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
ارسال شده آبان ۲۰, ۱۴۰۱ در مطالب ریاضی توسط UnknownUser (1,608 امتیاز)
ویرایش شده آبان ۲۲, ۱۴۰۱ توسط UnknownUser
828 بازدید

به نام خدا

یکی از بهترین و قدرتمندترین ماژول‌های پایتون برای محاسبات جبریِ ریاضی، ماژول SymPy است. کارهای مختلفی می‌توان با این ماژول انجام داد. از حل روابط بازگشتی گرفته (که در اینجا توضیح دادم) تا حل معادلات جبری و محاسبۀ دامنه و برد توابع ریاضی. در این مطلب، نحوۀ محاسبه و به‌دست آوردن دامنه و برد توابع با استفاده از این ماژول را در پایتون می‌توانید ببینید.

برای شروع کار ابتدا این ماژول را به‌شکل زیر در پایتون وارد می‌کنیم:

from sympy import *
from sympy.calculus.util import *

حالا برای تعریف متغیر x، x = Symbol("x") را به برنامه اضافه می‌کنیم:

from sympy import *
from sympy.calculus.util import *
x = Symbol("x")

سپس نوبت به تعریف تابع می‌رسد. برای تعریف تابع باید ابتدا نام تابع (f یا g یا h یا ...) و سپس یک علامت تساوی (=) و سپس قانون (ضابطه) تابع را به همان شکلی که است بنویسیم. فقط دقت کنید که در محیط پایتون برای توان از **، برای ریشۀ دوم از sqrt() و برای تقسیم و عبارات گویا از / استفاده کنید. اکنون فرض کنید که می‌خواهیم که دامنه و برد تابع $f(x) = \sqrt{ \frac{1}{x - 1} } $ را در مجموعۀ اعداد حقیقی ($\mathbb{R}$) به‌دست آوریم. پس f = sqrt(1 / (x - 1)) را به برنامه اضافه می‌کنیم:

from sympy import *
from sympy.calculus.util import *
x = Symbol("x")
f = sqrt(1 / (x - 1))

سپس برای نمایش دامنه و برد، باید به ترتیب از دو خط زیر استفاده کنیم.

print(continuous_domain(f, x, S.Reals))

print(function_range(f, x, S.Reals))

پس این دو خط را به برنامه اضافه می‌کنیم و برنامه را اجرا می‌کنیم.

from sympy import *
from sympy.calculus.util import *
x = Symbol("x")
f = sqrt(1 / (x - 1))
print("Domain:", continuous_domain(f, x, S.Reals))
print("Range:", function_range(f, x, S.Reals))

خروجی به‌شکل زیر است:

Domain: Interval.open(1, oo)
Range: Interval.open(0, oo)

کلمۀ "Interval" به معنی "فاصله" است که در اینجا منظور همان بازه در ریاضیات است. منظور از "oo" نیز بی‌نهایت ($\infty$) است (اگر خودتان دقت کنید متوجه می‌شوید که دو حرف o-ی انگلیسی در کنار هم به نماد بی‌نهایت شباهت دارند). پس Interval.open(1, oo) یعنی دامنۀ تابع بازۀ باز 1 تا بی‌نهایت و برد تابع بازۀ باز 0 تا بی‌نهایت است.

به‌عنوان مثال دوم، دامنه و برد تابع $f(x) = \frac{1}{x}$ را نیز به همین شکل محاسبه می‌کنیم.

from sympy import *
from sympy.calculus.util import *
x = Symbol("x")
f = 1 / x
print("Domain:", continuous_domain(f, x, S.Reals))
print("Range:", function_range(f, x, S.Reals))

خروجی به‌شکل زیر است:

Domain: Union(Interval.open(-oo, 0), Interval.open(0, oo))
Range: Union(Interval.open(-oo, 0), Interval.open(0, oo))

در اینجا "Union" به معنی همان اجتماع در ریاضیات است. پس Union(Interval.open(-oo, 0), Interval.open(0, oo)) یعنی دامنه و برد تابع برابر با اجتماع بازۀ باز منفی بی‌نهایت تا 0 و 0 تا بی‌نهایت است.

مثال سوم: دامنه و برد تابع $f(x) = \frac{1}{x^2 + 1}$ را به‌دست آورید.

from sympy import *
from sympy.calculus.util import *
x = Symbol("x")
f = 1 / (x ** 2 + 1)
print("Domain:", continuous_domain(f, x, S.Reals))
print("Range:", function_range(f, x, S.Reals))

خروجی به شکل زیر است:

Domain: Reals
Range: Interval.Lopen(0, 1)

در اینجا "Reals" به معنی مجموعۀ اعداد حقیقی است. پس دامنۀ تابع مجموعۀ اعداد حقیقی می‌باشد. L حرف اول کلمۀ انگلیسی "Left" به معنی "چپ" است. پس Interval.Lopen(0, 1) در واقع به این معناست که فقط سمت چپ بازه، باز است. پس برد تابع برابر با بازۀ باز 0 تا بستۀ 1 است.

دارای دیدگاه مرداد ۱۷, ۱۴۰۲ توسط rafig256 (646 امتیاز)
علاوه بر کد نویسی باید زبان خروجی رو هم یاد بگیریم. در حالی که خیلی بهتر بود از زبان خود ریاضیات برای خروجی استفاده کند. مثلا به جای oo همان علامت بی نهایت و به جای باه مطروحه [0,1) استفاده می کرد
این چرخ فلک که ما در او حیرانیم<br> فانوس خیال از او مثالی دانیم<br> خورشید چراغ دان و عالم فانوس<br> ما چون صوریم کاندرو حیرانیم
...