به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
سایت پرسش و پاسخ ریاضی
+1 امتیاز
360 بازدید
در دانشگاه توسط
برچسب گذاری دوباره توسط AmirHosein

لطفا در صورت امکان برنامه‌ای در نرم‌افزار میپل Maple یا متلب Matlab بنویسید که جواب تقریبی معادله انتگرال1 $$U(x)= e^{-x}-\int_0^1xe^tu(t){\rm d}t$$ را با استفاده از روش انتگرال‌گیری ذوزنقه‌ای برای $n=15$ و $n=20$ بدست‌آورد.


  1. ویرایشگر: در واقع تبدیل انتگرالی نه معادلهٔ انتگرالی چون تابعِ $u(t)$-ِ کوچک و تابع $U(x)$-ِ بزرگ یکسان نیستند. از این قبیل تبدیل‌ها در درس‌های معادلات دیفرانسیل یا آنالیز فوریه زیاد می‌بینید که بوسیلهٔ یک انتگرال تعریف می‌شوند. ↩︎

توسط AmirHosein (19,516 امتیاز)
@jj لطفا یک شناسهٔ کاربری بسازید و پرسش‌هایتان را با یک نام کاربری بفرستید. پرسش کاملا مشابه دیگری داشتید که با یک طرز نوشتن، املا، انشا، جزئیات و قالب نوشته بودید تنها تابع‌هایتان کمی شکلش فرق داشتند، ولی kk به عنوان نام فرستند انتخاب کردید و اینجا jj!
https://math.irancircle.com/3031

1 پاسخ

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

+1 امتیاز
توسط AmirHosein (19,516 امتیاز)
ویرایش شده توسط AmirHosein

به پاسخی که برای پرسش کاملا یکسان دیگرتان (تنها ضابطهٔ هستهٔ تبدیل انتگرالی‌تان فرق می‌کرد و به جای جمع با یک تابع، در یک اسکالر حاصل را ضرب می‌کردید) یعنی این پست نگاه بیندازید. روش دقیقا یکسان است پس توضیحی در مورد چگونگی حل‌کردن این پرسش در اینجا نمی‌آورم. چون در آنجا دستور را در محیط نرم‌افزار Matlab آورده‌ام، در اینجا دستور را در محیط نرم‌افزار Maple می‌آورم که دست‌کم مطلب جدیدتری برای یاد گرفتن داشته باشد. می‌توانید تفاوت‌های پیاده‌سازی الگوریتم در این دو نرم‌افزار را ببینید. پیش از شروع، باید گوشزد کنم که خوب نیست که یک چیز تکراری را بخواهید دیگران برایتان انجام بدهند. زمانی که نیت یادگیری باشد، شما یک پرسش می‌پرسید و سپس تلاش می‌کنید که پاسخ را یاد بگیرید و روش و ایده‌ای که آموختید را روی سوال مشابه امتحان کنید. برای همین دلیل قانع‌کننده‌ای از اینکه پاسخ را برای دقیقا یک سوال ولی دو عدد $n=15$ و $n=20$ خواسته‌اید دیده نمی‌شود. نه تنها نکتهٔ خاصی ندارد بلکه فقط یک جایگذاری عدد در دقیقا یک پاسخ است!

ابتدا تبدیل انتگرالی اینجا را با تبدیل انتگرالی پست پیشین‌تان مقایسه می‌کینم. در پست پیشین‌تان هستهٔ تبدیل یک تابع دوضابطه‌ای بود، در این پست دارید $k(x,t)=xe^t$. در پست پیشین حاصل انتگرال را در عدد $\lambda$ ضرب می‌کردید، در اینجا حاصل را از تابع $e^{-x}$ می‌کاهید.

اکنون تفاوت‌های برنامه‌نویسی. در حالب پیشین داشتید $n=10$ در اینجا برایتان $n=15$ را انجام می‌دهم. به راحتی به جای $15$ می‌توانید عدد $20$ قرار دهید، یا اینکه از ابتدا این عدد را نیز یک ورودی برای پروسه (در Maple به جای تابع function از اصطلاح پروسه procedure استفاده می‌کنیم) تعریف کنید که کاربر در هنگام فراخوانیِ پروسه آن را بدهد. در Matlab به خاطر ماهیتِ پیش‌فرضِ عددیِ نرم‌افزار، زمانی که چیزی نمادین دارید باید آن را به صورت مشخص به نرم‌افزار بیان کنید پس چیزی به نام دستور syms نیاز داشتید، در حالیکه در نرم‌افزار Maple برعکس، طراحی پیش‌فرض از ابتدا تأکید بر محاسبات نمادین داشته‌است پس چنین چیزی نیاز نیست و محاسبه‌های نمادین راحت‌تر نوشته و انجام می‌شوند. توجه کنید که می‌توانید $u$ را تابع‌وارانه تعریف کنید u(t) ولی در اینجا آن را عبارت‌گونه تعریف می‌کنیم و هرگاه قرار است مقداری به جای t بگذاریم از دستور subs که ابتدای واژهٔ substitution به معنای «جایگذاری» استفاده می‌کنیم. اکنون دستور برنامه:

Ufunction:=proc(u) 
local Uexpr,a,b,i; 
Uexpr:=0; 
b=0;
for i to 15 do
a:=b;
b:=a+1/15;
Uexpr:=Uexpr+(b-a)*(x*exp(a)*subs([t=a],u)+x*exp(b)*subs([t=b],u))/2;
end do;
return(exp(-x)+Uexpr);
end proc;

توجه کنید که در Maple میزان تو رفتگی ابتدای خط‌ها تغییری در کد ایجاد نمی‌کند زیر proc، for و if و از این قبیل، خط‌ها نیازی به تورفتگی ندارند ولی آزاد هستید که در صورت تمایل انجام دهید، من این کار را اینجا انجام ندادم.

اکنون فراخوانی پروسه برای $u(t)=\sin(t)$ به عنوان نمونه:

Ufunction(sin(t));

پاسخ را با استفاده از دستورِ latex که در این پستِ بلاگ معرفی کردیم به دستور TeX درآورده و در زیر قرار دادیم.

$${{\rm e}^{-x}}+1/15\,x{{\rm e}^{1/15}}\sin \left( 1/15 \right) +1/15\, x{{\rm e}^{2/15}}\sin \left( 2/15 \right) +1/15\,x{{\rm e}^{1/5}}\sin \left( 1/5 \right) +1/15\,x{{\rm e}^{{\frac{4}{15}}}}\sin \left( { \frac{4}{15}} \right) +1/15\,x{{\rm e}^{1/3}}\sin \left( 1/3 \right) + 1/15\,x{{\rm e}^{2/5}}\sin \left( 2/5 \right) +1/15\,x{{\rm e}^{{\frac {7}{15}}}}\sin \left( {\frac{7}{15}} \right) +1/15\,x{{\rm e}^{{\frac{ 8}{15}}}}\sin \left( {\frac{8}{15}} \right) +1/15\,x{{\rm e}^{3/5}} \sin \left( 3/5 \right) +1/15\,x{{\rm e}^{2/3}}\sin \left( 2/3 \right) +1/15\,x{{\rm e}^{{\frac{11}{15}}}}\sin \left( {\frac{11}{15} } \right) +1/15\,x{{\rm e}^{4/5}}\sin \left( 4/5 \right) +1/15\,x{ {\rm e}^{{\frac{13}{15}}}}\sin \left( {\frac{13}{15}} \right) +1/15\,x {{\rm e}^{{\frac{14}{15}}}}\sin \left( {\frac{14}{15}} \right) +1/30\, x{\rm e}\sin \left( 1 \right) $$

همانطور که می‌بینید ۱۵ جمعوند دارد. اگر بخواهید سینوس‌ها و توان‌های عدد نپر را تقریب بزنید و سپس این جمع را ساده کنید می‌توانید از دستور زیر استفاده کنید.

evalf((2));

که پرانتز شمارهٔ ۲ با فشردن کلید ترکیبیِ ctrl+L و سپس قرار دادن شمارهٔ خروجی مورد نظر که در برنامهٔ من ۲ بوده‌است در داخل پرانتزهای دستور evalf قرار گرفته است. به جای استفاده از شمارهٔ خروجی می‌توانید از علامت درصد در صورتیکه این خط را بلافاصله پس از اجرای چیزی که می‌خواهید روی آن اثر کنید استفاده کنید. یا بهترین راه این است که خروجی‌ای که می‌خواهید این دستور رویش اثر کند را از ابتدا نامگذاری می‌کردید و سپس نام آن خروجی را در داخل پرانتزِ evalf بگذارید. به هر حال حاصل برابر می‌شود با $$U(x)\simeq e^{-x}+(0.9103515323)x$$

در واقع از همان ابتدا می‌توانستید $x$ را از انتگرال بیرون بیاورید و حاصل انتگرال به روشنی یک عدد است.


حمایت مالی

کانال تلگرام محفل ریاضی
امروز : تاریخ شمسی اینجا نمایش داده می‌شود
...