به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
سایت پرسش و پاسخ ریاضی
Visanil
+4 امتیاز
1,437 بازدید
در دبیرستان و دانشگاه توسط

سلام دوستان و اساتید کسی روشی رو می‌دونه که باهاش بشه جمله عمومی دنباله از نوع بازگشتیِ خطی را در نرم افزار Maple محاسبه کرد؟ یا مثلاً به طور کلی برای محاسبه جمله عمومی انواع دنباله ها در نرم‌افزار Maple پکیج خاصی وجود دارد؟

2 پاسخ

می توانید به پاسخ(ها) امتیاز دهید یا آن را انتخاب کنید.

+4 امتیاز
توسط
ویرایش شده توسط UnknownUser

به نام خدا

سلام خدمت تمام دوستان و اساتید سایت محفل ریاضی

دستوری با نام rsolve در نرم‌افزار Maple وجود دارد که شما با استفاده از آن می‌توانید جملهٔ عمومی دنبالۀ بازگشتی مورد نظر خود را به‌دست آورید. برای مثال، برای اینکه جملهٔ عمومی دنبالۀ فیبوناچی را با استفاده از رابطهٔ بازگشتی آن در نرم‌افزار Maple به‌دست آورید، باید دستور زیر را در نرم‌افزار وارد کنید:

rsolve({f(n) = f(n-1) + f(n-2), f(1) = 1, f(2) = 1}, {f});

پس به همین ترتیب می‌توانید رابطهٔ بازگشتی مورد نظر خود را در نرم‌افزار وارد کنید و طی چند ثانیه جملهٔ عمومی آن را دریافت کنید.

+3 امتیاز
توسط AmirHosein (19,677 امتیاز)

آقای @Amirmza دستوری را در نرم‌افزار Maple در پاسخ‌شان معرفی کردند که اگر به آن رابطهٔ بازگشتیِ یک دنباله را بدهید (که الزامی ندارد خطی هم باشد) آنگاه به شما یک جملهٔ عمومیِ یک‌ضرب و نابازگشتی برای دنباله‌تان به شما می‌دهد. اما با توجه به پرسش‌های گذشته‌تان گفتم شاید دوست داشته‌باشید با دستور دیگری که اگر چند جملهٔ نخست دنباله را به Maple بدهید آنگاه به شما رابطهٔ بازگشتی (نه الزاما خطی) که مربوط به دنباله‌ای باشد که چند جملهٔ نخستش با عددهایی که داده‌اید برابر است یکسان شود. دستور rsolve که @Amirmza معرفی کردند در بستهٔ خاصی نیست و بدون فراخوانی بسته‌ای قابل استفاده است. اما دستوری که می‌خواهم معرفی کنم یعنی listtorec که کوتاه‌شدهٔ list to recursive به معنای «لیست را به (رابطهٔ) بازگشتی (تبدیل کن)» است در بستهٔ gfun که کوتاه‌شدهٔ generating function به معنای «تابع مولد» است قرار دارد. پس برای استفاده از این دستور ابتدا باید بسته‌اش را فراخوانی کنید. پس یا پیش از شروع دستور زیر را می‌زنید:

with(gfun):

و سپس هر جا از این دستور خواستید استفاده کنید از listtorec استفاده می‌کنید یا اینکه بدون زدن دستور بالا، همه جا از gfun[listtorec] استفاده می‌کنید (یعنی اسم بسته را پیش از اسم دستور می‌آورید). این دستور دو ورودیِ اجباری و یک ورودی اختیاری دارد. ورودی یکُم لیست عددهایی است که به همان ترتیب می‌خواهید جمله‌های نخست دنباله‌تان باشند. به یاد داشته باشید که لیست را در نرم‌افزار Maple با کروشه تعریف می‌کنیم نه با ابرو (آکولاد) یا پرانتز. ورودی دوم نام دنباله و نام متغیرتان است، برای نمونه اگر a_n را دوست دارید از a(n) می‌توانید استفاده کنید که یعنی نام دنباله a و متغیر (یا اندیس‌گذار) n است. می‌توانید چیزهای دیگری استفاده کنید برای نمونه oilprice(day) (بهای نفت، روز). ورودی سوم که اختیاری است، نوع لیست است که برای ما در اینجا فعلا اهمیتی ندارد، در صورت علاقه می‌توانید در نرم‌افزار Maple عبارت ?gftype را بزنید که صفحهٔ راهنمای مربوطه را می‌آورد. زمانی که ورودی سوم را خالی رها می‌کنید به طور خودکار 'ogf' در نظر گرفته می‌شود که کوتاه‌شدهٔ ordinary generating function (به معنای تابع مولد معمولی) است. توجه کنید که اگر خواستید خروجی که یک تابع بازگشتی است را به دستورِ rsolve بدهید تا یک تابع explicit بگیرید باید فقط مؤلفهٔ نخستِ خروجی را به آن بدهید و همین‌طور نام دنباله را (کل خروجی را به عنوان ورودیِ نخست دستور rsolve به آن ندهید) برای انتخاب مؤلفهٔ نخست به تنهایی باید مقابل آن عدد ۱ را در یک کروشه قرار دهید. اکنون بیاییم این دستور را بر روی سه نمونهٔ ساده بیاموزیم. چند جملهٔ نخست سه دنباله که به ترتیب دنبالهٔ نوسانیِ (-1)^n، دنباله‌ٔ حسابی با جمله شروع ۱ و قدر نسبت ۲، دنبالهٔ هندسی با جملهٔ شروع ۱ و قدر نسبت ۲ هستند را در زیر به این دستور می‌دهم. به نحوهٔ دادن لیست‌ها و غیره توجه کنید.

with(gfun):
l=[1,-1,1,-1,1,-1,1,-1]:
listtorec(l,a(n));
rsolve(%[1],a(n));
mysequence:=listtorec([1,2,4,8,16,32,64],b(n));
rsolve(mysequence[1],b(n));
listtorec([1,3,5,7,9,11,13],c(n));
rsolve(%[1],c(n));

خروجی این دستورها در خود محیط Maple را در زیر می‌بینید.

توضیحات تصویر

سه رابطهٔ بازگشتی پیشنهاد شده بوسیلهٔ Maple در زیر بازنویسی شده‌اند. توجه کنید که برای نمونه -a(n+1)-a(n) یعنی -a_{n+1}-a_n=0. و توجه کنید که Maple دنباله‌های بازگشتی‌اش را از صفر شروع به اندیس‌گذاری می‌کند نه یک.

\begin{array}{lll} a_{n+1}=-a_n, & a_0=1 & \\ b_{n+1}=2b_n, & b_0=1 & \\ c_{n+2}=2c_{n+1}-c_n, & c_0=1, & c_1=2 \end{array}

که در هر سه نمونهٔ ما رابطهٔ بازگشتیِ پیشنهادشدهٔ Maple خطی هم هستند. در حالت کلی Maple تلاش می‌کند ساده‌ترین رابطهٔ ممکن (مطابق با معیارهای الگوریتم نوشته‌شده‌اش) را محاسبه کند بنابراین با احتمال زیاد اگر رابطهٔ بازگشتی خطی‌ای باشد که ساده باشد، Maple آن را به شما می‌دهد.

توسط
+3
@AmirHosein بسیار عالی.در نرم افزار Mathematica دستور FindSequenceFunction جملهٔ عمومی دنباله مورد نظرمان را محاسبهٔ می‌کند،آیا در Maple هم همچین دستوری وجود دارد؟
توسط AmirHosein (19,677 امتیاز)
+2
@Amirmza دو دستور `rsolve` و `listtorec` را با هم به کار ببرید. می‌توانید به پاسخی که برای پرسش دیگرتان گذاشتم نیز نگاه کنید https://math.irancircle.com/18151/#a18160
...