محاسبات عددی که با عنوان Numerical Analysis یا Numerical Methods نیز شناخته می‌شود، شاخه‌ای از علم ریاضیات است که در آن به دنبال تحلیل و بررسی روش‌های عددی حل مسائل مختلف در حوزه علوم پایه و مهندسی هستیم. موضوعاتی که در محاسبات عددی مطرح می‌شوند عبارت‌اند از ریشه‌یابی، درون‌یابی و تقریب توابع، انتگرال‌گیری عددی و روش‌های مختلف حل معادلات دیفرانسیل. به این ترتیب محاسبات عددی توضیح می‌دهد که چگونه می‌توان از توابع، مشتق‌ها، انتگرال‌ها و معادلات دیفرانسیل به‌عنوان مجموعه‌ای از رشته‌های عددی در کامپیوترها استفاده کرد. در این مطلب از مجله فرادرس همراه با حل مثال توضیح می‌دهیم که مفاهیم پایه در محاسبات عددی چیست.

فهرست مطالب این نوشته
997696

در اولین بخش از این مطلب به معرفی دنباله‌ها و سری‌ها خواهیم پرداخت و یاد می‌گیریم معنای همگرایی سری‌ها در محاسبات عددی چیست. همچنین سری تیلور را به عنوان یکی از پرکاربردترین سری‌ها در ریاضیات معرفی می‌کنیم. در بخش بعد، روش‌های تقریبی انتگرال‌گیری عددی مانند روش تقریب مستطیلی، روش ذوزنقه‌ای، روش نقطه میانی و روش سیمپسون را توضیح می‌دهیم. در ادامه دیفرانسیل‌گیری عددی و روش‌های مختلف درون‌یابی مانند روش چند جمله‌ای وندرموند، روش چند جمله‌ای لاگرانژ و اسپلاین مستقیم و مربعی را شرح می‌دهیم. بخش‌های پایانی این نوشته نیز به بررسی معادلات غیرخطی و حل دقیق معادلات دیفرانسیل معمولی اختصاص دارد.

محاسبات عددی چیست؟

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

با توجه به اینکه کاربرد این شاخه از علم ریاضی اغلب به مسائلی محدود می‌شود که شامل توابع پیوسته، حدگیری و مباحث مرتبط با آن مانند دیفرانسیل‌گیری، انتگرال‌گیری، اندازه‌گیری، دنباله‌های بی‌نهایت، سری‌ها و توابع تحلیلی هستند، از این رو می‌توانیم محاسبات عددی و حوزه مطالعاتی آن را به‌ نوعی در مقابل ریاضیات گسسته در نظر بگیریم. اغلب دانشمندان و مهندسان در حوزه‌های مختلف دیر یا زود در کار خود با مسائل محاسباتی از این دست مواجه می‌شوند. بنابراین یادگیری و کسب مهارت در این شاخه‌ از ریاضیات از اهمیت بالایی برخوردار است. به‌طور کلی مهم‌ترین موضوعات محاسبات عددی به‌صورت زیر است:

  • بسط سری‌ها: از حساب دیفرانسیل و انتگرال تا محاسبات
  • انتگرال‌‌ به‌عنوان مجموع‌ و مشتق‌ به‌عنوان اختلاف
  • درون‌یابی، اسپلاین و نگاه دیگری به محاسبات عددی
  • روش‌های عددی برای حل معادلات دیفرانسیل معمولی یا ODE
  • پیدا کردن ریشه با روش‌هایی مانند نیوتن – رافسون
نمودار مباحث محاسبات عددی

مهارت و دانشی که در این درس آموزش داده می‌شود برای اغلب دانشمندان و مهندسان مشغول در حوزه شبیه‌سازی یا تحلیل داده در صنایع مختلف، کاملا مفید و کاربردی است. همچنین یادگیری این شاخه برای علاقه‌مندان به پژوهش در زمینه ریاضیات محاسباتی ضروری است.

پیش‌نیازهای درس محاسبات عددی چیست؟

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

یادگیری محاسبات عددی با فرادرس

پیش از شروع مباحث اصلی درس محاسبات عددی، در این قسمت قصد داریم تمام فیلم‌های آموزشی تهیه شده در همین زمینه را به شما معرفی کنیم. مشاهده این دوره‌های تصویری از مجموعه فرادرس به شما کمک می‌کند تا یادگیری خود را تکمیل کرده و بهتر متوجه شوید مباحث عددی چیست.

مجموعه آموزش محاسبات عددی – از دروس دانشگاهی تا کاربردی فرادرس
برای مشاهده مجموعه فیلم آموزش محاسبات عددی – از دروس دانشگاهی تا کاربردی فرادرس، روی تصویر کلیک کنید.
  1. فیلم آموزش محاسبات عددی – مرور و حل مساله فرادرس
  2. فیلم آموزش مبانی آنالیز عددی – بخش یکم فرادرس
  3. فیلم آموزش مبانی آنالیز عددی – بخش دوم فرادرس
  4. فیلم آموزش رایگان قاعده ذوزنقه ای برای محاسبه انتگرال منحنی فرادرس
  5. فیلم آموزش رایگان محاسبات عددی – خطاها فرادرس

دنباله ها و سری ها

یکی از مهم‌ترین مباحث در محاسبات عددی، مفهوم دنباله و سری است. بنابراین ابتدا باید بدانیم معنای همگرایی یک سری در محاسبات عددی چیست. به همین منظور، در اولین مبحث از محاسبات عددی ابتدا دنباله و سری را تعریف می‌کنیم و توضیح می‌دهیم تفاوت این دو در محاسبات عددی چیست.

پس از اینکه با مفهوم و تعریف دنباله و سری در محاسبات عددی آشنا شدیم، حالا نوبت به پاسخ دادن به این سوالات می‌رسد که معنای یک دنباله نامتناهی چیست؟ چگونه می‌توانیم همگرایی و واگرایی را نشان دهیم و چه زمانی می‌توانیم قوانین معمول برای دنباله‌های متناهی را در مورد دنباله‌های نامتناهی بکار ببریم؟

تعریف دنباله و سری

به مجموعه‌ای نامتناهی از اعداد که با یک ترتیب مشخصی در کنار هم قرار گرفته‌اند، یک دنباله یا Sequence گفته می‌شود. برای مثال، مجموعه زیر را می‌توانیم یک دنباله در نظر بگیریم:

a1,a2,a3,...a_1, a_2,a_3, …

این در حالی است که سری‌ها اغلب به‌صورت یک مجموع نامتناهی از اعداد به شکل زیر هستند:

a1+a2+a3+...a_1+ a_2+a_3+ …

برای ساده‌تر شدن محاسبات می‌توانیم اعدادی که در دنباله‌ها و سری‌هایی به شکل بالا قرار می‌گیرند را جزء مجموعه اعداد حقیقی فرض کنیم. اما این به این معنا نیست که اعداد مختلط نمی‌توانند در این دنباله‌ها و سری‌ها قرار بگیرند.

مفهوم همگرایی و واگرایی

یکی از روش‌های بررسی جمع‌های نامتناهی این است که آن‌ها را به‌صورت حد مجموع جزئی در نظر بگیریم. از آنجا که مجموع جزئی همان دنباله است، پس بهتر است ابتدا ببینیم مفهوم همگرایی دنباله‌ها و سری‌ها در محاسبات عددی چیست. به تعاریف و قضایایی که در ادامه توضیح داده می‌شوند، دقت کنید.

تعریف ۱

زمانی می‌گوییم دنباله‌ای به شکل (aj)j=0(a_j)^{infty}_{j=0}

ajbϵ|a_j-b| leq epsilon

در این شرایط دنباله (aj)j=0(a_j)^{infty}_{j=0}

ajba_jrightarrow b

limjaj=blim_{j rightarrow infty} a_j=b

اگر چنین شرایطی برای یک دنباله برقرار نباشد، در این صورت می‌گوییم دنباله موردنظر ما واگرا است. دنباله‌های نامحدود برای مثال دنباله‌هایی که شامل اعداد به دلخواه خیلی زیاد هستند، اغلب واگرا می‌شوند. همچنین طبق تعریف بالا همگرایی به بی‌نهایت معنایی ندارد، بلکه باید بگوییم یک دنباله به بی‌نهایت واگرا می‌شود.

به مثال‌های زیر در این زمینه توجه کنید:

  • اگر nn rightarrow infty
  • اگر nn rightarrow infty
  • با اینکه (1)n(-1)^n محدود است، اما همگرا نمی‌شود.
  • اگر nn rightarrow infty

برای اینکه ثابت کنیم در آخرین مثال lgnlg{n} همواره مقادیر دلخواه و بسیار بزرگی می‌پذیرد، با در نظر گرفتن هر عدد صحیح و بزرگی مانند mm، آیا همواره nn وجود دارد که به ازای آن داشته باشیم lgnmlg{n} geq m

تعریف ۲

فرض کنید دنباله‌ای به‌صورت (aj)j=0(a_j)^{infty}_{j=0}

SN=a0+a1+...+aN=j=0NajS_N= a_0+ a_1+… + a_N= sum_{j=0}^N a_j

در این تعریف زمانی سری jajsum_{j} a_j

j=0aj=bsum_{j=0}^{infty} a_j = b

مجددا این نکته را یادآوری می‌کنیم که اگر یک سری همگرایی نداشته باشد، می‌گوییم واگرا است. در ادامه می‌خواهیم ببینیم برخی قوانین در زمینه همگرایی سری‌ها در محاسبات عددی چیست. سری‌های خاصی مطلقا همگرا هستند، در حالی که برخی دیگر از سری‌ها تحت شرایط خاصی همگرا می‌شوند. دانستن این مسئله به ما کمک می‌کند تا بتوانیم تشخیص دهیم از چه نوع عملیات جبری برای بررسی همگرایی یک سری می‌توانیم استفاده کنیم.

تعریف ۳

یک سری به فرم j=0ajsum_{j=0}^{infty} a_j

قضیه ۱ (آزمون سری‌های متناوب)

یک سری به شکل j=0(1)jajsum_{j=0}^{infty} (-1)^{j}a_j

قضیه ۲

فرض کنید f:Z+Z+f: Z^+rightarrow Z^+

j=0aj=j=0af(j)sum_{j=0}^{infty} a_j= sum_{j=0}^{infty} a_{f(j)}

قضیه ۳

انجام عملیات زیر روی سری‌های مطلقا همگرا درست است:

  • عبور قدر مطلق‌ از بیرون جمع به داخل:

j=0ajj=0aj| sum_{j=0}^{infty} a_j| leq sum_{j=0}^{infty} |a_j|

  • مبادله جمع‌ها:

j=0k=0aj,k=k=0j=0aj,ksum_{j=0}^{infty} sum_{k=0}^{infty} a_{j,k} = sum_{k=0}^{infty} sum_{j=0}^{infty} a_{j,k}

نماد O بزرگ

پس از اینکه تا حدی یاد گرفتیم مفهوم همگرایی سری‌ها در محاسبات عددی چیست، در این بخش می‌خواهیم چند نماد معمول برای مقایسه رشد یا کاهش دنباله‌ها معرفی کنیم. سه نماد معروف در این زمینه داریم که عبارت‌اند از:

  • نماد OO بزرگ
  • نماد oo کوچک
  • نماد ominus بزرگ

اغلب نماد OO بزرگ بیشتر از دو نماد دیگر کاربرد دارد و دو نماد دیگر در مواردی مانند مقایسه نرخ کاهش خطاهای برشی یا مقایسه زمان اجرای الگوریتم‌ها استفاده می‌شوند. فرض کنید دو دنباله غیرصفر به نام‌های fnf_n

  1. اگر CC بزرگتر از صفر و مثبتی وجود داشته باشد به گونه‌ای که fnCgn|f_n| leq C|g_n|
  2. اگر همزمان با nn rightarrow infty
  3. اگر fn=O(gn)f_n=O(g_n)

fn=O(gn)f_n=O(g_n)توابع نمایی و توابع چند جمله‌ای، همواره داریم:

  • به ازای هر aa و bb مثبتی: na=o(ebn)n^a = o (e^{bn})
  • به ازای هر aa و bb مثبتی: ebn=o(na)e^{-bn} = o (n^{-a})

برای اینکه قوانین بالا را بهتر متوجه شوید، به مثال‌های زیر توجه کنید.

مثال ۱

فرض کنید fn=n2f_n=n^2

پاسخ

در اولین مورد باید یک CC بزرگتر از صفر و مثبتی وجود داشته باشد به‌طوری که fnCgn|f_n| leq C|g_n|

n2Cn31Cn11|n^2| leq C|n^3| Rightarrow 1 leq C|n| Rightarrow1 leq1

و برای n=2n=2

n2Cn31Cn12|n^2| leq C|n^3| Rightarrow 1 leq C|n| Rightarrow1 leq2

به این ترتیب درستی fnC(gn)|f_n| leq C|(g_n)|

fngn=n2n3=1nfrac{f_n}{g_n} = frac{n^2}{n^3} =frac{1}{n}

بنابراین اگر nn rightarrow infty

مثال ۲

درستی fn=O(gn)f_n=O(g_n)

پاسخ

طبق تعریف برای برقراری fn=O(gn)f_n=O(g_n)

nn+2C nn3|frac{n}{n+2}| leq C |frac{n}{n-3}|

چون لازم است دنباله‌های fnf_n

26C 3626 36frac{2}{6} leq C frac{3}{6} Rightarrow frac{2}{6} leq frac{3}{6}

پس درستی fnCgn|f_n| leq C|g_n|

fngn=nn+2nn3=n3n+2frac{f_n}{g_n} = frac{frac{n}{n+2}}{frac{n}{n-3}} = frac{n-3}{n+2}

limnn3n+2=320lim_{n rightarrow infty} frac{n-3}{n+2} = frac{-3}{2} neq 0

در نتیجه دومین مورد برای این دو دنباله صحیح نیست و داریم fno(gn)f_n neq o(g_n)

nn3C nn+2113 2336 46|frac{n}{n-3}| leq C |frac{n}{n+2}| Rightarrow |frac{1}{1-3}| leq |frac{2}{3}| Rightarrow frac{3}{6} leq frac{4}{6}

پس چون توانستیم یک CC بزرگتر از صفر و مثبتی پیدا کنیم که نامساوی بالا به ازای آن درست باشد، بنابراین داریم gn=O(fn)g_n=O(f_n)

بسط تیلور چیست؟

اگر بتوانیم تابع f(x)f(x) را حول نقطه‌ای مانند x=ax=a

f(x)=f(a)+f(a)(xa)+12f(a)(xa)2+13!f(a)(xa)3+...f(x) = f(a) + f^{‘}(a) (x-a) + frac{1}{2} f^{”}(a) (x-a)^2 + frac{1}{3!} f^{”’}(a) (x-a)^3 + …

در این صورت عبارت بالا بسط تیلور تابع f(x)f(x) نامیده می‌شود و فرم فشرده‌تر آن در قالب سری تیلور به شکل زیر خواهد شد:

f(x)=n=01n!f(n)(a)(xa)nf(x) = sum_{n=0}^{infty} frac{1}{n!}f^{(n)}(a) (x-a)^n

در این رابطه n!=n.(n1).....2.1n! = n.(n-1)…..2.1nn فاکتوریل است. دقت کنید بسط تیلور را برای هر تابعی نمی‌توانیم بنویسیم. برای اینکه بتوانیم بسط تیلور تابعی مانند f(x)f(x) را بنویسیم، لازم است این تابع انتگرال‌پذیر باشد. همچنین باید مطمئن شویم سری تیلور نوشته شده برای یک تابع، طبق روش‌هایی که در بخش قبل توضیح دادیم، یک سری همگرا باشد. شعاع همگرایی بسط تیلور یا RR، بیشترین شعاعی است که به ازای تمام مقادیر xx با شرایط زیر سری همگرا می‌شود:

xa<R|x-a| < R

این امکان در مورد سری تیلور با NN جمله وجود دارد که آن را در قالب دو جمله و به شکل زیر بازنویسی کنیم:

f(x)=n=0N11n!f(n)(a)(xa)n+1N!f(N)(y)(xa)Nf(x) = sum_{n=0}^{N-1} frac{1}{n!}f^{(n)}(a) (x-a)^n +frac{1}{N!}f^{(N)}(y) (x-a)^N

با این شرط که yy عددی بین xx و aa است. دقت کنید این فرمول مشخص نمی‌کند مقدار دقیق عدد yy چیست، بلکه فقط بیان می‌کند عددی مانند yy به‌عنوان آخرین جمله یا باقی‌مانده در بسط بالا وجود دارد. علی‌رغم اینکه yy در عبارت بالا مشخص نیست، این شکل از نوشتن بسط تیلور بسیار کاربردی‌تر از نوشتن آن به‌صورت یک سری بی‌نهایت است. در ادامه دو جمع‌بندی مهم برای بسط تیلور و با کمک گرفتن از آنچه در اولین بخش از مطلب محاسبات عددی آموختیم، بیان می‌کنیم.

نکته ۱: از آنجا که اغلب اندازه باقی‌مانده برای ما مهم است، می‌توانیم از نامساوی زیر استفاده کنیم:

1N!f(N)(y)(xa)N1N! (maxz[x,a]f(N)(z)) (xa)N|frac{1}{N!}f^{(N)}(y) (x-a)^N| leq frac{1}{N!} (max _{zin [x,a]} f^{(N)}(z) ) (x-a)^N

یا به صورت ساده‌تر:

1N!f(N)(y)(xa)N=O(xaN)frac{1}{N!}f^{(N)}(y) (x-a)^N =O ( |x-a|^N)

که در آن تمام ثوابت در نماد OO بزرگ مخفی شده‌اند. بنابراین می‌توانیم بگوییم باقی‌مانده از مرتبه  xaN |x-a|^N

نکته ۲: فرمول NN متناهی زمانی معتبر است که تابع ما NN مرتبه مشتق‌پذیر باشد و این به آن معنا نیست که بی‌نهایت مرتبه مشتق‌پذیری داشته باشیم. در حقیقت، سری تیلور با اینکه ممکن است واگرا شود، اما رابطه زیر همچنان معتبر است:

f(x)=n=0N11n!f(n)(a)(xa)n+1N!f(N)(y)(xa)Nf(x) = sum_{n=0}^{N-1} frac{1}{n!}f^{(n)}(a) (x-a)^n +frac{1}{N!}f^{(N)}(y) (x-a)^N

حل مثال از دنباله ها و سری ها

در ادامه چند مثال راجع‌به تعاریف و قضایای بیان شده در بخش همگرایی دنباله‌ها و سری‌ها را با هم بررسی می‌کنیم تا بهتر متوجه شوید معنای همگرایی در محاسبات عددی چیست.

مثال ۱

ثابت کنید سری j=02jsum_{j=0}^{infty} 2^{-j}

پاسخ

برای اثبات این سوال، ابتدا مجموع جزئی زیر را در نظر می‌گیریم:

SN=j=02jS_N= sum_{j=0}^{infty} 2^{-j}

حال اجازه دهید با استقرا نشان دهیم که SN=22NS_N= 2 – 2^{-N}

20=220=12^{-0}= 2 – 2^{-0}=1

پس با توجه به استقرا می‌توانیم SNS_N

SN+1=SN+2(N+1)=(22N)+2(N+1)S_{N+1} = S_N+2^{-(N+1)} = (2 – 2^{-N}) + 2^{-(N+1)}

مثال ۲

سری هارمونیک را به شکل زیر را در نظر بگیرید و واگرایی آن را نشان دهید:

1+12+13+14+...1+frac{1}{2}+frac{1}{3}+frac{1}{4}+…

پاسخ

برای اثبات واگرایی این سری، کافی است نشان دهیم NN مجموع جزئی با logNlog{N} قابل مقایسه است. ابتدا انتگرال آزمون زیر را بکار می‌بریم:

SN=j=1N1j1N+11xdxS_N= sum_{j=1}^N frac{1}{j}geq int_{1}^{N+1} frac{1}{x}dx

انتگرال بعدی log(N+1)log{(N+1)}

مثال ۳

با فرض عبارت زیر برای تمام qqهای بزرگتر از صفر، اگر این رابطه را به عنوان تابعی از qq «تابع زتای ریمان» بنامیم و به‌صورت ζ(q)zeta (q) نشان دهیم، نشان دهید این تابع که یکی از توابع موردعلاقه نظریه‌پردازان محاسبات عددی نیز به شمار می‌رود، برای مقادیر بیشتر از q=1q=1

j=11nqsum_{j=1}^{infty} frac{1}{n^q}

پاسخ

مشابه سوال قبل با بکارگیری انتگرال آزمونی مانند مثال ۲، می‌توانیم نشان دهیم که سری برای مقادیر qq بزرگتر از یک همگرا می‌شود، در حالی که برای q1q leq 1

مثال ۴

یک سری به شکل 112+1314+1516+...1-frac{1}{2}+frac{1}{3}-frac{1}{4}+frac{1}{5}-frac{1}{6}+…

پاسخ

خیر، این سری همگرایی مطلق ندارد، چون اگر مقادیر مطلق را از جملات آن حذف کنیم، به یک سری هارمونیک خواهیم رسید. بنابراین با اینکه این سری همگرای مطلق نیست، اما همگرایی مشروط دارد. فرض کنید NN زوج است و جملات سری SN=j=1N(1)jjS_N=sum_{j=1}^{N} frac{(-1)^j}{j}

1j1j+1=1j(j+1)frac{1}{j} -frac{1}{j+1} = frac{1}{j(j+1)}

طبق نامساوی 1j(j+1)1j2frac{1}{j(j+1)} leq frac{1}{j^2}

SNj=1,3,5,...N11j2S_N leq sum_{j=1,3,5,…}^{N-1} frac{1}{j^2}

که می‌دانیم این سری همگرا است. از طرفی اگر NN فرد باشد، در این صورت SN=SN1+1N+1S_N=S_{N-1}+frac{1}{N+1}

مثال ۵

مجددا سری 1314+1516+...frac{1}{3}-frac{1}{4}+frac{1}{5}-frac{1}{6}+…

پاسخ

می‌توانیم این سری را به شکل دیگری مجددا مرتب کنیم، به این صورت که به ازای هر جمله مثبت، بلافاصله دو جمله منفی بعد از آن قرار دهیم:

131416+1518110+...frac{1}{3}-frac{1}{4}-frac{1}{6}+frac{1}{5}-frac{1}{8}-frac{1}{10}+…

این سری هم همگرا است. اما همگرایی آن برابر است با (log21)2=0.153426…frac{(log 2- 1)}{2}= -0.153426…

روش‌ های انتگرال‌ گیری عددی

پس از اینکه در اولین بخش یاد گرفتید مفهوم دنباله و سری در محاسبات عددی چیست، دومین بخش با توضیح ساده‌ترین روش‌های انتگرال‌گیری عددی شروع می‌شود. در این بخش یاد می‌گیریم روش‌های انتگرال‌گیری عددی در محاسبات عددی چیست و هر کدام بر مبنای چه نوع تقریبی پاسخ یک انتگرال را برای ما محاسبه می‌کنند.

نمودار روش‌های انتگرال گیری عددی - محاسبات عددی چیست

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

روش مستطیلی

اولین روشی که برای محاسبه انتگرال‌های عددی در درس محاسبات عددی معرفی می‌شود، روش تقریب مستطیلی است. می‌دانیم مفهوم ابتدایی انتگرال یک تابع معادل است با محاسبه مساحت زیر منحنی آن تابع، که از جمع کردن مساحت تمام مستطیل‌های فرضی در این ناحیه به‌صورت تقریبی به‌دست می‌آید. این توضیح بیان ساده‌ای از مجموع ریمان است.

با اینکه این روش بسیار ساده بنظر می‌رسد، اما پاسخ دقیق‌تر آن با در نظر گرفتن تعداد زیادی مستطیل حاصل می‌شود. برای شروع، تابعی مانند ff را در نظر بگیرید که انتگرال آن به شکل زیر محاسبه می‌شود:

01f(x)dxint_{0}^{1} f (x) dx

اگر محدوده انتگرال‌گیری در این انتگرال را به‌صورت [a,b][a,b] فرض کنیم و آن را به بازه‌های کوچکتری به شکل [xj1,xj][x_{j-1},x_j]

xj=jhx_j=jh

h=1Nh = frac{1}{N}

0=x0<x1<...<xN=10 = x_0 < x_1 < … < x_N = 1

در این صورت با در نظر گرفتن اینکه xjx_j

01f(x)dx=j=1Nxj1xjf(x)dxint_{0}^{1} f (x) dx = sum_{j=1}^N int_{x_j-1}^{x_j} f (x) dx

اگر انتگرال‌ها را با مقادیری که فقط به نمونه‌های f(xj)f(x_j)

xj1xjf(x)dxhf(xj1)int_{x_j-1}^{x_j} f (x) dx simeq h f(x_{j-1})

در حقیقت در محاسبه بالا روش مستطیلی را برای محاسبه انتگرال عددی انتخاب کرده‌ایم:

01f(x)dxj=1Nf(xj1)int_{0}^{1} f (x) dx simeq sum_{j=1}^N f(x_{j-1})

برای اینکه دقت این تقریب را بهتر متوجه شویم، نیاز داریم از بسط تیلور استفاده کنیم که در بخش قبل آن را معرفی کردیم. تابع ff را در xj1xjf(x)dxint_{x_{j-1}}^{x_j} f (x) dx

f(x)=f(xj1)+f(y(x))hf(x) =f(x_{j-1})+ f^{‘}(y(x)) h

که در آن y(x)[xj1,x]y(x) in [x_{j-1},x]

xj1xjf(x)dx=hf(xj1)+hxj1xjf(y(x))dxint_{x_{j-1}}^{x_j} f(x) dx = hf(x_{j-1}) + h int_{x_{j-1}}^{x_j}f^{‘}(y(x)) dx

ما در مورد تابع y(x)y (x) چیز زیادی نمی‌دانیم اما می‌توانیم با اطمینان نامساوی زیر را برای آن بنویسیم:

hxj1xjf(y(x))dxh maxy[xj1,xj] f(y)xj1xj1dxh |int_{x_{j-1}}^{x_j}f^{‘}(y(x)) dx | leq h max _{yin [x_{j-1},x_j]} |f^{‘}(y) | int_{x_{j-1}}^{x_j} 1dx

با توجه به اینکه طرف دوم نامساوی بالا با عبارت زیر برابر می‌شود:

h maxy[xj1,xj] f(y)xj1xj1dx=h2 maxy[xj1,xj] f(y)h max _{yin [x_{j-1},x_j]} |f^{‘}(y) | int_{x_{j-1}}^{x_j} 1dx = h^2 max _{yin [x_{j-1},x_j]} |f^{‘}(y) |

بنابراین تا زمانی که تابع ff انتگرال‌پذیر باشد، می‌توانیم بنویسیم:

xj1xjf(x)dx=hf(xj1)+O(h2)int_{x_{j-1}}^{x_j} f(x) dx = hf(x_{j-1}) + O (h^2)

که تمام مشتق‌های تابع ff در نماد OO مخفی شده‌اند. پس انتگرال در بازه [0,1][0,1] دارای NN عدد از چنین جملاتی است و وقتی که این جملات با هم جمع می‌شوند، مقادیر خطا به شکل N.O(h2)=O(h)N. O (h^2) = O(h)

01f(x)dxhj=1Nf(xj1)+O(h)int_{0}^{1} f(x) dx simeq h sum_{j=1}^N f(x_{j-1}) + O (h)

مرتبه خطا در این بررسی با خود فاصله شبکه کارتزین یا hh برابر شد. به همین دلیل می‌گوییم این روش مرتبه اول است (چون توان hh برابر با 11 است). اما اینکه طول هر مستطیل را از آخرین نقطه باقی‌مانده یعنی xj1x_{j-1}

روش نقطه میانی

اگر بخواهیم بدانیم مهم‌ترین تفاوت روش مستطیلی و روش نقطه میانی در محاسبات عددی چیست، کافی است به‌جای xj1x_{j-1}

01f(x)dxhj=1Nf(xj12)+O(h2)int_{0}^{1} f(x) dx simeq h sum_{j=1}^N f(x_{j-frac{1}{2}}) + O (h^2)

این رابطه بیان می‌کند که تابع ff دو مرتبه مشتق‌پذیر است، چون ff^{”}

اگر تابع f(x)f(x) روی بازه بسته‌ای به شکل [a,b][a,b] تعریف شده باشد و بتوانیم این بازه را به nn زیربازه با طول مساوی به شکل x=bantriangle x= frac{b-a}{n}

abf(x)dxi=1nf(xi1+xi2)xint_{a}^{b} f(x) dx approx sum_{i=1}^n f(frac{x_{i-1}+x_i}{2}) triangle x

تصویری از یک منحنی
قاعده نقطه میانی

در عمل روش‌های تقریبی زمانی کاربرد درستی خواهند داشت که بدانیم مقدار دقیق انتگرال چقدر است. می‌دانیم وقتی که پاسخ تقریبی یک انتگرال را به‌دست آوردیم، مقدار خطای محاسبات برابر است با اختلاف بین مقدار واقعی و مقدار تقریبی انتگرال. در هر روش تقریبی که در این بخش معرفی می‌کنیم، بهتر است که کران‌ خطا را نیز تعریف کنیم. مقدار کران خطا از خطای واقعی باید بزرگتر باشد. برای مثال، اگر AA پاسخ تقریبی انتگرالی و EE کران خطای متناظر با این پاسخ باشد، در این صورت مطمئن هستیم که مقدار واقعی انتگرال همواره بین دو مقدار AEA-E

همچنین در مورد محاسبه تقریبی انتگرال‌های عددی مطلوب این است که خطا تابعی از xtriangle x و به‌صورت E=E(E = E(

فرض کنید تابع ff دارای مشتق دومی به‌صورت ff^{”}

E(x)=ba24M(x)2=(ba)324n2ME (triangle x)= frac{b-a}{24} M (triangle x)^2 = frac{(b-a)^3}{24n^2} M

یکی دیگر از روش‌های تقریبی با دقتی از مرتبه دوم، روش ذوزنقه‌ای است که در بخش بعد متوجه خواهید شد روش استفاده از آن در محاسبات عددی چیست.

روش ذوزنقه‌‌ ای

برخلاف روش مستطیلی و روش نقطه میانی که در هر دو از مستطیل‌ها برای تقریب زدن و حل انتگرال عددی استفاده می‌کردیم، در روش ذوزنقه‌ای با در نظر گرفتن تعداد زیادی ذوزنقه در بازه [xj1,xj][x_{j-1},x_j]

h(f(xj1)+f(xj))2frac{h (f(x_{j-1})+ f(x_{j}) )}{2}

اگر بخواهیم این مقدار را با انتگرال ff روی همان بازه مقایسه کنیم، با در نظر گرفتن بسط تیلور کوتاه شده به شکل دو جمله خواهیم داشت:

f(x)=f(xj1)+f(xj1)(xxj1)+O(h2)f (x) = f(x_{j-1}) + f^{‘} (x_{j-1}) (x-x_{j-1}) + O(h^2)

f(xj)=f(xj1)+f(xj1)h+O(h2)f (x_{j}) = f(x_{j-1}) + f^{‘} (x_{j-1}) h + O(h^2)

که دومین مشتق ff در این عبارت در علامت OO بزرگ قرار گرفته است. با انتگرال‌گیری از رابطه اول خواهیم داشت:

xj1xjf(x)dx=hf(xj1)+h22f(xj1)+O(h3)int_{x_{j-1}}^{x_j} f (x) dx = hf(x_{j-1}) + frac{h^2}{2} f^{‘} (x_{j-1}) + O(h^3)

از طرفی اگر f(xj)=f(xj1)+f(xj1)h+O(h2)f (x_{j}) = f(x_{j-1}) + f^{‘} (x_{j-1}) h + O(h^2)

h(f(xj1)+f(xj))2=hf(xj1)+h22f(xj1)+O(h3)frac{h (f(x_{j-1})+ f(x_{j}) )}{2} = h f(x_{j-1}) + frac{h^2}{2} f^{‘} (x_{j-1}) + O(h^3)

بنابراین می‌توانیم بنویسیم:

xj1xjf(x)dx=h2(f(xj1)+f(xj))+O(h3)int_{x_{j-1}}^{x_j} f (x) dx = frac{h}{2} (f(x_{j-1}) +f(x_{j})) + O(h^3)

حالا با جمع‌بندی روی jj خواهیم داشت:

01f(x)dx=h2f(0)+hj=1N1f(xj)+h2f(1)+O(h2)int_{0}^{1} f (x) dx = frac{h}{2} f(0) + h sum_{j=1}^{N-1} f(x_{j}) +frac{h}{2} f(1) +O(h^2)

بنابراین روش ذوزنقه‌ای هم یک روش تقریبی از مرتبه دوم است. در شکل‌‌های زیر محاسبه تقریبی مساحت زیر یک منحنی به دو روش مستطیلی و ذوزنقه‌ای با هم مقایسه شده‌ و واضح است که روش ذوزنقه‌ای تقریب دقیق‌تری است:

مساحت زیر یک منحنی با روش تقریب مستطیلی - محاسبات عددی
روش تقریب مستطیلی برای محاسبه انتگرال عددی
روش تقریب ذوزنقه‌ای برای محاسبه انتگرال عددی

یک روش دیگر برای بررسی جزئی روش ذوزنقه‌ای این است که مانند روش نقطه میانی در بخش قبل، بازه موردنظر خود را به به nn زیربازه با طول مساوی به شکل x=bantriangle x= frac{b-a}{n}

f(xi)+f(xi+1)2xfrac{ f(x_{i})+ f(x_{i+1})}{2} triangle x

که با جمع کردن مساحت تمام این ذوزنقه‌ها خواهیم داشت:

f(x0)+f(x1)2x+f(x1)+f(x2)2x+...+f(xn1)+f(xn)2xfrac{ f(x_{0})+ f(x_{1})}{2} triangle x +frac{ f(x_{1})+ f(x_{2})}{2} triangle x + … + frac{ f(x_{n-1})+ f(x_{n})}{2} triangle x

با ساده‌سازی عبارت بالا خواهیم داشت:

x[f(x0)2+f(x1)+f(x2)+...+f(xn1)+f(xn)2]triangle x [frac{ f(x_{0})}{2} + f(x_{1})+ f(x_{2}) + … + f(x_{n-1})+ frac{f(x_{n})}{2} ]

x2[f(x0)+2f(x1)+2f(x2)+...+2f(xn1)+f(xn)]frac{ triangle x }{2}[ f(x_{0}) + 2f(x_{1})+ 2f(x_{2}) + … + 2 f(x_{n-1})+ f(x_{n})]

پس قاعده ذوزنقه‌ای برای محاسبه انتگرال عددی با فرضیاتی کاملا مشابه با قاعده نقطه میانی اما با نتیجه‌ای متفاوت و به شکل زیر تعریف می‌شود:

اگر تابع f(x)f(x) روی بازه بسته‌ای به شکل [a,b][a,b] تعریف شده باشد و بتوانیم این بازه را به nn زیربازه با طول مساوی به شکل x=bantriangle x= frac{b-a}{n}

abf(x)dxx2[f(x0)+2f(x1)+2f(x2)+...+2f(xn1)+f(xn)]int_{a}^{b} f(x) dx approx frac{ triangle x }{2}[ f(x_{0}) + 2f(x_{1})+ 2f(x_{2}) + … + 2 f(x_{n-1})+ f(x_{n})]

تصویری از یک ذوزنقه زیر منحنی

همان‌طور که در مورد روش نقطه میانی کران خطا را تعیین کردیم، در اینجا هم کران خطا را به شکل زیر تعریف می‌کنیم:

فرض کنید تابع ff دارای مشتق دومی به‌صورت ff^{”}

E(x)=ba12M(x)2=(ba)312n2ME (triangle x)= frac{b-a}{12} M (triangle x)^2 = frac{(b-a)^3}{12n^2} M

نکته: مزیت روش ذوزنقه‌ای در مقایسه با سایر روش‌های تقریبی برای محاسبه انتگرال‌ها در محاسبات عددی این است که قسمت بالا یا نوک ذوزنقه طبق شکل بالا می‌تواند تقریب خیلی خوبی از بخش خمیده شده یا ماکزیمم منحنی تابع داده شده به ویژه در شرایطی که xtriangle x خیلی کوچک می‌شود، ارائه دهد. این در حالی است که در روش‌های تقریبی مستطیلی چنین تقریبی برای این ناحیه نمی‌توانیم داشته باشیم.

روش سیمپسون

در انتهای بخش قبل تاکید کردیم که مزیت کاربرد روش ذوزنقه‌ای در مقایسه با روش‌های تقریب مستطیلی مانند روش نقطه میانی به جهت محاسبه تقریبی انتگرال‌ها در محاسبات عددی چیست. حال اگر به‌جای استفاده از اشکال هندسی با اضلاعی با خطوط راست و مستقیم مانند مستطیل یا ذوزنقه، دنبال تقریب نزدیکتری به منحنی تابع داده شده باشیم، احتمالا از قاعده سیمپسون استفاده کرده‌ایم. عموما بهترین شکلی که می‌توانیم برای این روش تقریبی انتخاب کنیم، سهمی است. اگر بخشی از منحنی تابع داده شده در زیر انتگرال را با یک سهمی به معادله y=ax2+bx+cy = ax^2 + bx +c

مساحت زیر منحنی با رنگ بنفش در تصویر مشخص شده است.
روش سیمپسون برای حل انتگرال عددی

پیش از ادامه این مبحث، بهتر است یادآوری کنیم فرادرس در همین زمینه دوره‌ای با عنوان فیلم آموزش انتگرال عددی با قواعد ذوزنقه‌‌ای و سیمپسون – پیاده‌ سازی در متلب را تهیه کرده است که با مشاهده این دوره می‌توانید پیاده‌سازی این روش را در متلب نیز فرابگیرید. لینک این آموزش در ادامه برای شما قرار داده شده است:

می‌دانیم بین هر دو نقطه انتخابی تعداد بی‌نهایت سهمی می‌توان رسم کرد، اما بین سه نقطه فقط می‌توانیم یک سهمی رسم کنیم. بنابراین اگر بتوانیم بین سه نقطه متوالی روی منحنی مانند (xi,f(xi))(x_{i} , f(x_{i}))

حالا اگر بازه بسته [a,b][a,b] را به تعداد زوجی زیربازه تقسیم کنیم، می‌توانیم منحنی تابع را با چند سهمی جایگزین تقریب بزنیم که هر کدام بخشی از زیربازه‌های ایجاد شده را پوشش می‌دهد. اما اول باید فرمول مساحت زیر یک منحنی سهمی شکل را بدانیم. برای به‌دست آوردن چنین فرمولی لازم است معادله سهمی یعنی y=ax2+bx+cy = ax^2 + bx +c

ابتدا باید سه معادله زیر را برای a,b,ca,b,c

f(xi)=a(xi+1x)2+b(xi+1x)+cf(x_i) = a (x_{i+1}-triangle x)^2 + b (x_{i+1}-triangle x) + c

f(xi+1)=a(xi+1)2+bxi+1+cf(x_{i+1}) = a (x_{i+1})^2 + b x_{i+1} + c

f(xi+2)=a(xi+1+x)2+b(xi+1+x)+cf(x_{i+2}) = a (x_{i+1}+triangle x)^2 + b (x_{i+1}+triangle x) + c

حل این سه معادله برای پیدا کردن سه مجهول a,b,ca,b,c

xi+1xxi+1+x(ax2+bx+c)dx=x3(f(xi)+4f(xi+1)+f(xi+2))int_{x_{i+1}-triangle x}^{x_{i+1}+triangle x} (ax^2 + bx +c) dx = frac{triangle x}{3} (f(x_{i}) + 4f(x_{i+1}) + f(x_{i+2}))

بنابراین اگر بخواهیم مجموع مساحت زیر تمام سهمی‌ها را حساب کنیم، باید عبارت زیر را به‌دست آوریم:

x3(f(x0)+4f(x1)+f(x2)+f(x2)+4f(x3)+f(x4)+...+f(xn2)+4f(xn1)+f(xn))frac{triangle x}{3} (f(x_{0}) + 4f(x_{1}) + f(x_{2}) +f(x_{2}) + 4f(x_{3}) + f(x_{4}) + … +f(x_{n-2}) + 4f(x_{n-1}) + f(x_{n}) )

که در حالت ساده‌تر می‌شود:

x3(f(x0)+4f(x1)+2f(x2)+4f(x3)+2f(x4)+...+2f(xn2)+4f(xn1)+f(xn))frac{triangle x}{3} (f(x_{0}) + 4f(x_{1}) + 2f(x_{2}) + 4f(x_{3}) + 2f(x_{4}) + … +2f(x_{n-2}) + 4f(x_{n-1}) + f(x_{n}) )

بنابراین مشاهده می‌کنید که محاسبات برای روش سیمپسون با محاسبات روش ذوزنقه‌ای بسیار متفاوت است. نکته مهم این است که در فرمول بالا نباید ضرایب دو و چهار را فراموش کنیم. همچنین دقت کنیم که بازه موردنظر خود را به تعداد زوجی زیربازه تقسیم کنیم نه تعداد فرد.

بنابراین تعریف دقیق قاعده سیمپسون به این صورت است:

فرض کنید تابع f(x)f(x) روی بازه بسته‌ای به شکل [a,b][a,b] تعریف شده باشد و بتوانیم این بازه را به nn زیربازه با طول مساوی به شکل x=bantriangle x= frac{b-a}{n}

abf(x)dxx3[f(x0)+4f(x1)+2f(x2)+4f(x3)+...+2f(xn2)+4f(xn1)+f(xn)]int_{a}^{b} f(x) dx approx frac{ triangle x }{3}[ f(x_{0}) +4f(x_{1})+ 2f(x_{2}) +4f(x_{3}) + … + 2f(x_{n-2}) + 4f(x_{n-1}) + f(x_{n})]

همان‌طور که در مورد روش ذوزنقه‌ای کران خطا را تعیین کردیم، در اینجا هم کران خطا را به شکل زیر تعریف می‌کنیم:

فرض کنید تابع ff دارای مشتق چهارمی به‌صورت f(4)f^{(4)} در هر نقطه از بازه [a,b][a,b] است و برای تمام xx‌های این بازه همواره عبارت f(4)(x)M|f^{(4)}(x)| leq M

E(x)=ba180M(x)4=(ba)5180n4ME (triangle x)= frac{b-a}{180} M (triangle x)^4 = frac{(b-a)^5}{180n^4} M

با توجه به فاکتور 180n4180n^4، کران خطا در این روش دقت بسیار بالاتری نسبت به همتای خود در روش ذوزنقه‌ای یا نقطه میانی دارد. در ادامه این بخش با حل چند مثال بهتر یاد می‌گیریم که تفاوت‌های این روش‌های تقریبی در حل مسائل محاسبات عددی چیست.

حل مثال از روش‌های انتگرال گیری عددی

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

مثال ۱‍

انتگرال تابع f(x)=x2f(x) =x^2

پاسخ

می‌دانیم حاصل این انتگرال با استفاده از فرمول‌‌های انتگرال‌گیری برابر است با 01x2dx=x32+101=13int_{0}^{1} x^2 dx = frac{x^3}{2+1} |_{0}^{1} =frac{1}{3}

01x2dx14[0+142+122+3242]=1464=0.2188…int_{0}^{1} x^2 dx simeq frac{1}{4}[ 0 + frac{1}{4^2} +frac{1}{2^2} +frac{3^2}{4^2} ] = frac{14}{64} = 0.2188…

این عدد از 13frac{1}{3}

01x2dx14[12.0+142+122+3242+12.1]=2264=0.3438…int_{0}^{1} x^2 dx simeq frac{1}{4}[ frac{1}{2} .0 + frac{1}{4^2} +frac{1}{2^2} +frac{3^2}{4^2} + frac{1}{2} .1 ] = frac{22}{64} = 0.3438…

این جواب به 13frac{1}{3}

مثال ۲

حاصل انتگرال 01ex2dxint_{0}^{1} e^{-x^2} dx

پاسخ

ابتدا مشتق دوم را برای تابع زیر انتگرال پیدا می‌کنیم که طبق فرمول‌‌های مشتق‌گیری برابر می‌شود با:

f(x)=(4x22)ex2f^{”} (x) = (4x^2-2) e^{-x^2}

بنابراین همین جا می‌توانیم به این نتیجه برسیم که روی بازه بسته [0,1][0,1]، تابع f(x)|f^{”} (x)|

112(2)1n2<0.005frac{1}{12} (2) frac{1}{n^2} < 0.005

16(200)<n2frac{1}{6} (200) < n^2

5.771003<n5.77 approx sqrt{frac{100}{3}}< n

با در نظر گرفتن n=6n=6

abf(x)dx16[f(0)2+f(16)+f(26)+...+f(56)+f(1)2]0.74512int_{a}^{b} f(x) dx approx frac{1}{6}[ frac{f(0)}{2} + f(frac{1}{6} )+ f(frac{2}{6} ) + … + f(frac{5}{6} )+ frac{f(1)}{2} ] approx 0.74512

در این محاسبه کران خطا به ما نشان می‌دهد مقدار خطا در دو سمت این تقریب چگونه است. با توجه به مقدار محاسبه شده برای کران خطا و حاصل انتگرال به روش تقریبی، پاسخ درست و واقعی برای انتگرال داده شده همواره بین دو مقدار 0.745120.0047=0.740420.74512 – 0.0047 = 0.74042گرد می‌شوند که اعداد یکسانی نیستند. بنابراین از دومین رقم اعشاری در پاسخ به‌دست آمده مطمئن نیستیم.

راه‌حل چنین مشکلی این است که nn بزرگتری انتخاب کنیم. برای مثال، با در نظر گرفتن n=12n=12

112(2)1n2<0.001frac{1}{12} (2) frac{1}{n^2} < 0.001

16(1000)<n2frac{1}{6} (1000) < n^2

12.915003<n12.91 approx sqrt{frac{500}{3}}< n

بنابراین بلافاصله می‌توانستیم نتیجه‌گیری کنیم که n=13n=13

مثال ۳

حاصل انتگرال 01ex2dxint_{0}^{1} e^{-x^2} dx

پاسخ

مشتق چهارم تابع زیر انتگرال برابر می‌شود با:

f(4)(x)=(16x448x2+12)ex2f^{(4)} (x) = (16x^4-48x^2+12) e^{-x^2}

بنابراین روی بازه بسته [0,1][0,1]، تابع f(4)(x)|f^{(4)} (x)| دارای مقدار ماکزیممی به اندازه 1212 است. حالا شروع می‌کنیم به پیدا کردن تعداد زیربازه‌هایی که برای تقریب زدن این انتگرال نیاز داریم. برای اینکه حاصل انتگرال را تا دومین رقم اعشار به‌دست آوریم، قطعا باید E(x)<0.005E (triangle x) < 0.005

1180(12)1n4<0.001frac{1}{180} (12) frac{1}{n^4} < 0.001

13(200)<n4frac{1}{3} (200) < n^4

2.8620034<n2.86 approx sqrt [4]{frac{200}{3}}< n

چون لازم است تعداد زیربازه‌ها زوج باشند، پس با در نظر گرفتن n=4n=4

[f(0)+4f(14)+2f(12)+4f(34)+f(1)]13.40.746855[ f(0) + 4f(frac{1}{4} )+ 2f(frac{1}{2} ) + 4f(frac{3}{4} ) + f(1)] frac{1}{3.4} approx 0.746855

بنابراین مقدار واقعی انتگرال عددی است که بین دو مقدار 0.7468550.0003=0.7465550.746855 – 0.0003 = 0.746555

مثال ۴

پاسخ تقریبی انتگرال زیر را به دو روش ذوزنقه‌ای و سیمپسون و با در نظر گرفتن چهار زیربازه محاسبه کنید:

24x3dxint_{2}^{4} x^3 dx

پاسخ

روی بازه بسته [2,4][2,4] با در نظر گرفتن n=4n=4

x=ban=424=12triangle x= frac{b-a}{n} = frac{4-2}{4}= frac{1}{2}

ابتدا تقریب ذوزنقه‌ای را به شکل زیر محاسبه خواهیم کرد:

24x3dx14[f(2)+2f(52)+2f(3)+2f(72)+f(4)]int_{2}^{4} x^3dx approx frac{1}{4}[ f(2) + 2f(frac{5}{2} )+2 f(3 ) + 2f(frac{7}{2} ) + f(4)]

24x3dx14[23+2(52)3+2(3)3+2(72)3+43]=2434int_{2}^{4} x^3dx approx frac{1}{4}[ 2^3 + 2(frac{5}{2} )^3+2 (3)^3 + 2(frac{7}{2} ) ^3+ 4^3] = frac{243}{4}

همچنین خطای این تقریب را می‌توانیم به‌صورت زیر تعیین کنیم:

E(12)=812(16)M=M24E( frac{1}{2}) = frac{8}{12(16)} M = frac{M}{24}

که در آن رابطه f(x)<M|f^{”} (x) | < M

f(x)=6xf^{”} (x) = 6x

می‌بینیم که نامساوی f(x)<6(4)=24|f^{”} (x) | < 6(4)=24

24x3dx=2434±1int_{2}^{4} x^3dx = frac{243}{4} pm 1

حالا همین روند را با بکارگیری قاعده سیمپسون امتحان می‌کنیم:

24x3dx16[f(2)+4f(52)+2f(3)+4f(72)+f(4)]int_{2}^{4} x^3dx approx frac{1}{6}[ f(2) + 4f(frac{5}{2} )+2 f(3 ) + 4f(frac{7}{2} ) + f(4)]

24x3dx=14[23+4(52)3+2(3)3+4(72)3+43]=60int_{2}^{4} x^3dx = frac{1}{4}[ 2^3 + 4(frac{5}{2} )^3+2 (3)^3 + 4(frac{7}{2} ) ^3+ 4^3] = 60

به تفاوت ضرایب در این دو روش و اثری که در نتیجه خواهد داشت، دقت کنید. با توجه به اینکه f(4)=0|f^{(4)}| = 0

دیفرانسیل‌ گیری عددی

در بخش قبل این موضوع را بررسی کردیم که انواع روش‌های تقریبی محاسبه انتگرال در محاسبات عددی چیست. در این بخش می‌خواهیم ببینیم روش‌های مشابه مشتق‌گیری تقریبی در محاسبات عددی چیست. ساده‌ترین روش محاسبه تقریبی مشتق u(xj)u^{‘} (x_j)

در یک شبه‌فضای شبکه‌ای که به صورت xj=jhx_j = jhدیفرانسیل‌ها به این شکل تعریف می‌شوند:

  • تفاضل‌های راست و چپ یا تفاضل یک‌طرفه

+uj=uj+1ujhtriangle_{+}u_j = frac{u_{j+1} – u_j}{h}

uj=ujuj1htriangle_{-}u_j = frac{u_{j} – u_{j-1}}{h}

  • تفاضل مرکزی دو طرفه

0uj=uj+1uj2htriangle_{0}u_j = frac{u_{j+1} – u_j}{2h}

حالا می‌خواهیم دقت این تفاضل‌ها را در مشتق‌های تقریبی و در شرایطی که h0h rightarrow 0

u(h)=u(0)+hu(0)+h22u(ξ)u(h) = u (0) + hu^{‘}(0) + frac{h^2}{2} u^{”} (xi)

فراموش نمی‌کنیم که ξ ϵ[0,h]xi epsilon [0,h]. با جایگزینی این عبارت در فرمول تفاضل راست خواهیم داشت:

+uj=uhu0h=u(0)+h2u(ξ)triangle_{+}u_j = frac{u_{h} – u_0}{h} = u^{‘}(0) + frac{h}{2} u^{”} (xi)

مادامی که تابع دارای دو مشتق مرزی است، خطا در این عبارت با O(h)O (h) مشخص می‌شود. به همین خاطر می‌گوییم تفاضل راست روشی از مرتبه اول است. بررسی تفاضل چپ هم به شکل مشابهی است. در مورد تفاضل مرکزی، از دو بسط تیلور حول نقطه صفر برای توابع u(h)u (h) و u(h)u (-h) استفاده می‌کنیم. به این ترتیب رابطه‌ای از مرتبه سوم به شکل زیر به‌دست خواهد آمد:

u(±h)=u(0)±hu(0)+h22u(0)±h36u(ξ)u(pm h) = u (0) pm hu^{‘}(0) + frac{h^2}{2} u^{”} (0) pm frac{h^3}{6} u^{”’} (xi)

که در آن ξxi بسته به اینکه کدام علامت انتخاب شود می‌تواند جزء بازه [0,h][0,h] یا [h,0][-h,0] باشد. با کم کردن u(h)u(-h) از u(h)u(h) و حذف جملات شامل h2h^2 خواهیم داشت:

uhuh2h=u(0)+h23u(ξ)frac{u_{h} – u_{-h}}{2h} = u^{‘}(0) + frac{h^2}{3} u^{”’} (xi)

در این محاسبات خطا از مرتبه O(h2)O(h^2) خواهد بود که نشان دهنده این است که تابع uu سه مرتبه دیفرانسیل‌گیری می‌شود و در نتیجه این روش یک روش مرتبه دوم است. ساده‌ترین انتخاب برای مشتق دوم، تفاضل دوم مرکزی است:

2uj=uj+12uj+uj1h2triangle^{2}u_j = frac{u_{j+1} -2 u_j + u_{j-1}}{h^2}

که در آن 2=+=+triangle^{2} = triangle _+triangle_-= triangle_-triangle_+

چون 2triangle^{2} دقت مرتبه دوم است، پس خطا به‌صورت O(h2)O(h^2) خواهد شد. برای اینکه این نکته را ثابت کنیم، بسط تیلور را حول نقطه صفر و برای مرتبه چهارم می‌نویسیم:

u(±h)=u(0)±hu(0)+h22u(0)±h36u(0)+h424u(ξ)u(pm h) = u (0) pm hu^{‘}(0) + frac{h^2}{2} u^{”} (0) pm frac{h^3}{6} u^{”’} (0) + frac{h^4}{24} u^{””} (xi)

که در آن 2=+=+triangle^{2} = triangle _+triangle_-= triangle_-triangle_+

uj+12uj+uj1h2=u(0)+h212u(ξ)frac{u_{j+1} -2 u_j +u_{j-1}}{h^2} = u^{”}(0) + frac{h^2}{12} u^{”’} (xi)

بنابراین تا زمانی که تابع uu چهار مرتبه قابلیت دیفرانسیل‌گیری داشته باشد، این روش کاملا O(h2)O(h^2) است. برای مثال، برای تابع f(x)=x2f(x) = x^2

f(x)=2xf^{‘}(x) = 2x

f(x)=2f^{”}(x) = 2

در نتیجه برای تفاضل راست و چپ و تفاضل مرکزی دوم خواهیم داشت:

+f(x)=(x+h)2x2h=2x+htriangle_{+} f(x) = frac{(x+h)^2 – x^2 }{h} = 2x + h

f(x)=x2(xh)2h=2xhtriangle_{-} f(x) = frac{x^2 – (x-h)^2 }{h} = 2x – h

0f(x)=(x+h)2(xh)22h=2xtriangle_{0} f(x) = frac{(x+h)^2 – (x-h)^2 }{2h} = 2x

2f(x)=(x+h)22x2+(xh)2h2=2triangle^2 f(x) = frac{(x+h)^2 – 2x^2 + (x-h)^2 }{h^2} = 2

خطا در تفاضل راست برابر است با hh، در حالی که برای تفاضل چپ h-h می‌شود. پس برای این دو مورد خطا O(h)O(h) است. همچنین خطا برای 0triangle_{0}

درون‌ یابی چیست؟

در سومین بخش از مباحث محاسبات عددی، به توضیح درون‌یابی یا Interpolation می‌پردازیم. اگر بخواهیم مفهوم درون‌یابی را به زبان ساده و با مثال توضیح دهیم، فرض کنید مقادیر مختلف سرعت رو به بالای موشکی به‌صورت تابعی از زمان و در قالب داده‌های نقطه‌ای گسسته در اختیار شما قرار داده شده است. اگر بخواهید سرعت این موشک را در یک زمان خاصی پیدا کنید (با این فرض که این برای این زمان داده‌ای در مورد سرعت ندارید)، می‌توانید از روش درون‌یابی داده‌هایی که در اختیار دارید استفاده کنید.

تصویر کارتنی از پرتاب موشکی به سمت فضا

در عمل روند استفاده از روش درون‌یابی برای پیدا کردن پروفایل یا نحوه تغییرات ارتفاع، سرعت و شتاب یک موشک به این شکل است که یک پروب سرعت در موشک، سرعت آن را در هر لحظه اندازه‌گیری می‌کند. به این ترتیب به کمک این داده‌ها می‌توانیم سرعت موشک را در هر لحظه خاص درون‌یابی کنیم. بنابراین درون‌یابی مسئله‌ فیت کردن یا برازش مجموعه‌ای از نقاط با یک منحنی یا نمودار یک تابع است و در شاخه‌های مختلفی از جمله تحلیل داده، ریاضیات کاربردی، طراحی صنعتی، پردازش سیگنال و تحلیل‌های عددی کاربرد دارد. اگر بخواهیم به زبان آماری صحبت کنیم، درون‌یابی به نوعی محاسبه رگرسیون است. پس در درون‌یابی به دنبال یافتن مقادیر تابع در نقاطی هستیم که برای آن‌ها داده‌ای نداریم و می‌خواهیم با توجه به داده‌هایی که داریم این نقاط را تخمین بزنیم.

در مسئله درون‌یابی با داده‌هایی به شکل زیر روبرو هستیم که به‌صورت نقاطی مجزا و گسسته هستند و برای اینکه بتوانیم مقدار yy را برای هر xx تخمین بزنیم، لازم است از یک تابع پیوسته به شکل f(x)f(x) استفاده کنیم که از این داده‌های نقطه‌ای عبور می‌کند. این روش همان فیت کردن یا برازش است و مقادیر yyای که به این روش تعیین شوند، مقادیر درون‌یابی شده نامیده می‌شوند.

تصویری از نقاط مختلف روی نمودار یک تابع
درون‌یابی و فیت کردن تابع f(x) روی نقاط داده

در این روش پیدا کردن تابع f(x)f(x) مناسب چالش اصلی است و اغلب توابع چندجمله‌ای بهترین انتخاب هستند، به این دلیل که ارزیابی، مشتق‌‌گیری و انتگرال‌گیری از این توابع بسیار آسان است. روش‌های مختلف درون‌یابی که در ادامه راجع‌به آن‌ها صحبت خواهیم کرد، عبارت‌اند از:

  • درون‌یابی چند جمله‌ای
  • درون‌یابی اسپلاین
نمودار انواع روش‌های درون‌یابی در محاسبات عددی

نکته: اگر xx جزء دامنه نباشد، در این صورت برای پیدا کردن مقدار yy متناظر با این xx باید از برون‌یابی یا Extrapolation استفاده کنیم.

درون‌ یابی چند جمله‌ ای

درون‌یابی چند جمله‌ای یکی از روش‌های محاسبات عددی برای درون‌یابی است که در آن از یک چند جمله‌ای درجه NN که از N+1N+1

  • درون‌یابی مستقیم یا روش چند جمله‌ای وندرموند
  • روش نیوتن
  • درون‌یابی لاگرانژ

با توجه به اینکه در مطلب «درون یابی نیوتن – به زبان ساده» از مجله فرادرس این روش کاملا توضیح داده شده است، در ادامه این بخش فقط به توضیح دو روش دیگر پرداخته‌ایم.

درون‌ یابی مستقیم یا روش چند جمله‌ ای وندرموند

فرض کنید N+1N+1

می‌دانیم تعریف یک چند جمله‌ای درجه NN و با ضرایبی به‌صورت a0,...,aNa_0, …, a_N

pN(x)=n=0Nanxnp_N (x) = sum_{n=0}^N a_nx^n

ابتدا باید تعداد درجات آزادی در چند جمله‌ای با تعداد نقاطی که می‌خواهیم تابع با آن‌ها فیت شود، هماهنگ باشد. سپس برای اینکه ببینیم روش مستقیم و عددی حل مسئله درون‌یابی در محاسبات عددی چیست، تعریف زیر را در نظر می‌گیریم:

yj=n=0Nanxjny_j = sum_{n=0}^N a_nx_j^n

این عبارت برای کلیه j=0,...,Nj = 0,…,N

Va=y    n=0NVjnan=yjV a = y Leftrightarrow sum_{n=0}^N V_{jn}a_n = y_j

در رابطه بالا VV «ماتریس وندرموند» نام دارد که به شکل زیر تعریف می‌شود:

Vjn=xjnV_{jn}= x_j^n

در ادامه با کاربرد یک نرم‌افزار عددی مانند متلب می‌توانیم شکل برداری xjx_j

نکته ۱: اگر از یک چند جمله‌ای خطی برای درون‌یابی مستقیم استفاده کنیم، در این صورت درون‌یابی خطی انجام داده‌ایم.

نکته ۲: اگر از یک چند جمله‌ای درجه دو برای درون‌یابی مستقیم استفاده کنیم، در این صورت درون‌یابی مربعی انجام داده‌ایم.

درون‌ یابی چند جمله‌ ای به روش لاگرانژ

در این قسمت توضیح می‌دهیم که چگونه می‌توانیم مسئله درون‌یابی چند جمله‌ای را در محاسبات عددی به کمک روش لاگرانژ حل کنیم. ابتدا خطای درون‌یابی را بر اساس نرم یکنواخت اختلاف f(x)pN(x)f(x) – p_N(x)

fpN:=maxxf(x)pN(x)|| f – p_N|| _{infty} := max _x |f(x) – p_N(x)|

که در آن ماکزیمم روی بازه بسته [x0,xN][x_0,x_N]

Lk(xj)=δjk={1j=k0jkL_k(x_j) = delta _{jk} = begin{cases}1 & j=k\0 & jneq kend{cases}

در این روند با ثابت در نظر گرفتن kk می‌توانیم بگوییم LkL _k

Lk=Cjk(xxj)L _k = C prod_{jneq k} (x-x_j)

با ارزیابی این عبارت در x=xkx=x_k

1=Cjk(xkxj)1 = C prod_{jneq k} (x_k-x_j)

C=1jk(xkxj)C = frac{1}{prod_{jneq k} (x_k-x_j)}

بنابراین تنها عبارت ممکن برای Lk(x)L_k(x)

Lk(x)=jk(xxj)jk(xkxj)L_k(x) = frac{prod_{jneq k} (x-x_j)}{prod_{jneq k} (x_k-x_j)}

این چند جمله‌ای‌های اولیه اساس بسط هر چند جمله‌ای را تشکیل می‌دهند. در بخش مثال‌ها بهتر متوجه کاربرد این روابط خواهید شد.

قضیه درون‌یابی لاگرانژ: اگر {xj,j=0,...,N}left{ x_j, j = 0, … , N right}

pN(xj)=yj,    j=0,...,Np_N (x_j) = y_j , j= 0, …, N

عبارت گسترده‌تر برای رابطه بالا با توجه به لم اولی که توضیح داده شد، به شکل زیر است:

pN(x)=k=0NykLk(x)p_N (x) = sum_{k=0}^N y_kL_k(x)

که در آن Lk(x)L_k(x)

درون‌ یابی اسپلاین

گفتیم روش درون‌یابی چند جمله‌ای بر مبنای پیدا کردن یک چند جمله‌ای درجه NN استوار است. اما اگر NN خیلی بزرگ باشد، ممکن است با رفتار نوسانی در درون‌‌یابی چند جمله‌ای روبرو شویم. این رفتار «پدیده رونگه» نام دارد. با کاربرد درون‌یابی اسپلاین می‌توانیم از رخ دادن پدیده رونگه یا رفتار نوسانی نقاط داده جلوگیری کنیم. درون‌یابی اسپلاین سه نوع است، خطی، مربعی و مکعبی که در ادامه به اختصار این روش‌ها را توضیح می‌دهیم.

اسپلاین خطی

شکل زیر را در نظر بگیرید که در آن نقاطی به شکل (x0,y0)(x_0, y_0)

تصویری از نمودار خطی و نقاط روی آن
اسپلاین خطی

اگر فرض کنیم داده‌های بالا به‌صورت نزولی مرتب شده‌اند، تابع متناظر با این خطوط در هر بازه برابر است با:

f(x)=f(x0)+f(x1)f(x0)x1x0(xx0)  x0xx1f(x) = f(x_0 ) + frac{f(x_1) – f(x_0) }{x_1 -x_0 }(x -x_0) x_0 leq x leq x_1

f(x)=f(x1)+f(x2)f(x1)x2x1(xx1)  x1xx2f(x) = f(x_1) + frac{f(x_2) – f(x_1) }{x_2 -x_1 }(x -x_1) x_1 leq x leq x_2

و به همین ترتیب برای تمام نقاط. در نتیجه در حالت کلی برای تابع اسپلاین خطی داریم:

f(x)=f(xn1)+f(xn)f(xn1)xnxn1(xxn1)  xn1xxnf(x) = f(x_{n-1}) + frac{f(x_n) – f(x_{n-1}) }{x_n -x_{n-1} }(x -x_{n-1}) x_{n-1} leq x leq x_n

اسپلاین مربعی

در اسپلاین مربعی تابع f(x)f(x) به شکل زیر برای هر دو نقطه در نظر گرفته می‌شود:

f(x)=a1x2+b1x+c1   x0xx1f(x) = a_1x^2 + b_1x + c_1 x_0leq x leq x_1

f(x)=a2x2+b2x+c2   x1xx2f(x) = a_2x^2 + b_2x + c_2 x_1leq x leq x_2

بنابراین تابع اسپلاین مربعی در حالت کلی شکل زیر را دارد:

f(x)=anx2+bnx+cn   xn1xxnf(x) = a_nx^2 + b_nx + c_n x_{n-1}leq x leq x_n

در این حالت 3n3n ضریب مجهول داریم که باید با در نظر گرفتن نکات زیر و رسیدن به 3n3n معادله تعیین شوند:

  1. اگر تابع اسپلاین مربعی را برای هر دو نقطه پشت سر هم بنویسیم، 2n2n معادله خواهیم داشت.
  2. مقدار مشتق اول تابع اسپلاین برای هر دو نقطه پشت سر هم در یک نقطه مشترک برابر است. از این نکته n1n-1
  3. تا اینجا 2n+n12n+n-1

نمودار منحنی شکل به رنگ آبی و نقاط مختلف روی آن
اسپلاین مربعی

خطای درون‌ یابی توابع هموار

در بخش قبل آموختیم روش‌های مختلف درون‌یابی مانند چند جمله‌ای‌های اولیه لاگرانژ یا روش اسپلاین در محاسبات عددی چیست. در این قسمت با توضیح یک قضیه نشان می‌دهیم روش بررسی خطای درون‌یابی در محاسبات عددی چگونه است. فرض کنید رابطه fϵCN+1[a,b]fepsilon C^{N+1} [a,b]

f(x)pN(x)=fN+1(ξ(x))(N+1)!πN+1(x)f(x) -p_N (x) =frac{f^{N+1}(xi(x))}{(N+1)!} pi _{N+1} (x)

در این رابطه πN+1(x)pi _{N+1} (x)

πN+1(x)=j=1N+1(xxj)pi _{N+1} (x) = prod_{j=1}^{N+1} (x – x_j )

تخمین خطای درون‌یابی مستقیما با توجه به این قضیه به‌دست خواهد آمد:

MN+1=maxx[a,b]fN+1(x)M _{N+1} = max _{x in [a,b]} |f^{N+1} (x) |

دقت کنید طبق فرض‌های اولیه برای برقراری این قضیه لازم است تابع fN+1f^{N+1} پیوسته باشد. در این صورت داریم:

f(x)pN(x)MN+1(N+1)!πN+1(x)|f(x) – p_N(x) | leq frac{ M _{N+1}}{(N+1)!} |pi _{N+1} (x) |

بنابراین اگر x=xjx=x_j

حل مثال  از روش های درون یابی

در انتهای این بخش با حل چند مثال به شما کمک می‌کنیم تا بهتر متوجه شوید مفهوم درون‌یابی در محاسبات عددی چیست.

مثال ۱

فرض کنید مقادیر سرعت موشکی بر حسب زمان در قالب جدولی به شکل زیر داده شده است. سرعت این موشک را در زمان t=16 st = 16 s

t(s)t(s) v(t)(ms)v(t) (frac{m}{s})
00 00
1010 227.04227.04
1515 362.78362.78
2020 517.35517.35
22.522.5 602.97602.97
3030 901.67901.67

پاسخ

در این سوال ابتدا با کاربرد روش درون‌یابی خطی می‌توانیم معادله سرعت را به شکل زیر بنویسیم:

v(t)=a0+a1tv(t) = a_0 +a_1t

چون از یک چند جمله‌ای خطی استفاده کرده‌ایم، پس کافی است دو نقطه را که به لحظه t=16 st = 16 s

نمودار خطی و نقاط ابتدا و انتهای آن
درون‌یابی چند جمله‌ای مستقیم و خطی

با توجه به اینکه مقادیر سرعت برای این دو لحظه از زمان مشخص هستند، بنابراین با قرار دادن مقادیر زمان و سرعت مشخص در معادله چند جمله‌ای بالا خواهیم داشت:

362.78=a0+a1(15)362.78 = a_0+a_1 (15)

517.35=a0+a1(20)517.35 = a_0+a_1 (20)

اگر دو معادله و دو مجهول بالا را حل کنیم، در نهایت معادله سرعت برابر است با:

v(t)=100.93+30.914 tv(t) = -100.93+30.914 t

نکته مهم این است که این معادله برای تمام زمان‌های 15 st20 s15 s leq t leq 20 s

v(16)=393.70v(16) =393.70

در مرحله بعدی همین سرعت را با استفاده از یک چند جمله‌ای درجه دو محاسبه می‌کنیم:

v(t)=a0+a1t+a2t2v(t) = a_0 +a_1t+a_2t^2

در اینجا باید سه نقطه را که به لحظه t=16 st = 16 s

منحننی و نقاط روی آن
درون‌یابی چند جمله‌ای مستقیم و مربعی

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

v(t)=12.05+17.733t+0.3766t2v(t) = 12.05 +17.733t+0.3766t^2

این معادله برای بازه 10 st20 s10 s leq t leq 20 s

v(t)=392.19v(t) = 392.19

مثال ۲

درون‌یابی خطی بین دو نقطه (x1,y1)(x_1,y_1)

پاسخ

چندجمله‌ای pN(x)p_N (x)

pN(x)=k=0NykLk(x)p_N (x) = sum_{k=0}^N y_kL_k(x)

برای این مسئله چند جمله‌ای ما به‌صورت زیر خواهد شد:

p1(x)=y1L1(x)+y2L2(x)p_1 (x) = y_1L_1(x)+y_2L_2(x)

همچنین با توجه به رابطه Lk(x)=jk(xxj)jk(xkxj)L_k(x) = frac{prod_{jneq k} (x-x_j)}{prod_{jneq k} (x_k-x_j)}

L1(x)=xx2x1x2L _1 (x) = frac{x-x_2}{x_1-x_2}

L2(x)=xx1x2x1L _2 (x) = frac{x-x_1}{x_2-x_1}

p1(x)=y2y1x2x1x+y1x2y2x1x2x1xp_1 (x) = frac{y_2-y_1}{x_2-x_1} x + frac{y_1x_2-y_2x_1}{x_2-x_1} x

p1(x)=y1+y2y1x2x1(xx1)p_1 (x) = y_1 + frac{y_2-y_1}{x_2-x_1} (x -x_1)

مثال ۳

فرض کنید تابعی به شکل f(x)=exf(x) = e^x

پاسخ

ابتدا جمله اولیه لاگرانژ را به شکل زیر و طبق Lk(x)=jk(xxj)jk(xkxj)L_k(x) = frac{prod_{jneq k} (x-x_j)}{prod_{jneq k} (x_k-x_j)}

L0(x)=(xx1)(xx2)(x0x1)(x0x2)=12x(x1)L_0(x) = frac{ (x-x_1) (x-x_2)}{ (x_0-x_1) (x_0-x_2)}= frac{ 1}{ 2}x(x-1)

به‌طور مشابه برای سایر جملات خواهیم داشت:

L1(x)=1x2L_1(x) = 1-x^2

L2(x)=12x(x+1)L_2(x) = frac{ 1}{ 2}x(x+1)

بنابراین درون‌یابی درجه دو برای این سوال با توجه به فرمول pN(x)=k=0NykLk(x)p_N (x) = sum_{k=0}^N y_kL_k(x)

p2(x)=e1L0(x)+e0L1(x)+e1L2(x)p_2(x) = e^{-1} L_0(x) + e^{0} L_1(x) + e^{1} L_2(x)

p2(x)=1+sinh(1)x+(cosh(1)1)x2p_2(x) = 1 + sinh (1)x + (cosh(1) – 1)x^2

p2(x)1+1.1752x+0.5431x2p_2(x) approx 1 +1.1752x +0.5431x^2

همان‌طور که ملاحظه می‌کنید، بخشی از پاسخ این محاسبات در قالب توابع هایپربولیک به‌دست می‌آید. البته یکی دیگر از چندجمله‌ای‌هایی که می‌تواند برای تقریب تابع نمایی f(x)=exf(x) = e^x

t2(x)=1+x+12x2t_2(x) = 1+x+frac{1}{2} x^2

مثال ۴

بار دیگر اولین مثال از این بخش را در نظر بگیرید و سعی کنید این بار این سوال را به کمک درون‌یابی اسپلاین حل کنید:

پاسخ

برای استفاده از اسپلاین خطی نیاز داریم دو داده نقطه‌ای نزدیک به نقطه t=16 st = 16 s

v(t)=v(t0)+v(t1)v(t0)t1t0(tt0)v(t) = v(t_0) + frac{v(t_1) – v(t_0) }{t_1 -t_0 }(t-t_0)

با قرار دادن ثوابت خواهیم داشت:

v(t)=362.78+30.913(t15)   15t20v(t) = 362.78 +30.913(t-15) 15 leq t leq 20

حالا می‌توانیم با قرار دادن t=16 st = 16 s

v(16)=393.7v(16) =393.7

معادلات غیرخطی

در اولین قسمت از این بخش می‌آموزیم تعریف معادلات غیرخطی در محاسبات عددی چیست و در چه نوع مسائلی به حل این نوع معادلات نیاز داریم. هر معادله‌ای که در آن توانی بیشتر از یک برای متغیر xx داشته باشیم، یک معادله غیرخطی نامیده می‌شود. یک مثال ملموس و ساده از حل معادلات غیرخطی شکل زیر است که اگر در آن وزن مخصوص و شعاع توپ قرمز رنگ مشخص باشد‌ (0.60.6 و 5.5 cm5.5 cm)، با بکار بردن قوانین فیزیکی حاکم بر این مسئله به یک معادله غیرخطی به شکل زیر خواهیم رسید:

3.99×1040.165x2+x3=03.99times 10^{-4} -0.165x^2+x^3 = 0

تصویری از یک توپ قرمز در زمینه سفید و آبی

با حل معادله غیرخطی بالا می‌توانیم xx یا عمقی که توپ در آب شناور می‌ماند را پیدا کنیم. بنابراین پس از آشنایی با معادلات غیرخطی، در مرحله بعد باید بدانیم روش پیدا کردن ریشه‌های این معادلات در محاسبات عددی چیست که در بخش بعد به این موضوع خواهیم پرداخت.

روش‌ های عددی پیدا کردن ریشه‌ها

ابتدا با ساده‌ترین فرم یک معادله غیرخطی یعنی یک معادله درجه دو به شکل ax2+bx+c=0ax^2+bx+c = 0

x=b±b24ac2ax = frac{-bpm sqrt{b^2-4ac}}{2a}

و با توجه به مقدار عبارت b24acb^2-4ac

  • اگر b24acsqrt{b^2-4ac}
  • اگر b24acsqrt{b^2-4ac}
  • اگر b24acsqrt{b^2-4ac}

اما در اغلب مسائل پیچیده عددی با معادلات غیرخطی از مراتب یا درجات بالاتر سروکار داریم. در این موارد باید از روش‌های محاسبات عددی برای پیدا کردن ریشه‌ها استفاده کنیم که عبارت‌اند از:

  • روش دو بخشی
  • روش نیوتن
  • روش وتری

در ادامه دو روش اول را همراه با حل مثال توضیح می‌دهیم. در مورد سومین روش که Secant Method هم نامیده می‌شود، می‌توانید مطلب «روش وتری – به زبان ساده» از مجله فرادرس را مطالعه کنید.

نمودار روش‌های عددی یافتن ریشه‌ها

روش دو بخشی

روش دو بخشی یا Bisection Method که الگوریتم جستجوی دودویی هم نامیده می‌شود، یکی از اولین روش‌هایی است که برای پیدا کردن ریشه‌های یک معادله غیرخطی استفاده شد. این روش بر مبنای قضیه‌ زیر تعریف می‌شود:

معادله‌ای به شکل f(x)=0f(x) = 0

  • اگر f(xl)f(xu)>0f(x_l) f(x_u) > 0
  • اگر f(xl)f(xu)<0f(x_l) f(x_u) < 0

همان‌طور که مشاهده می‌کنید، اگر مقدار تابع در دو نقطه xlx_l

منحنی و نقاط روی آن

اما همان‌طور که گفتیم اگر f(xl)f(xu)<0f(x_l) f(x_u) < 0

یک نمودار سینوسی شکل

این در حالی است که اگر تابع پیوسته موردنظر ما در این دو نقطه تغییر علامت ندهد، همچنان ممکن است برای معادله f(x)=0f(x) = 0

یک منجنی سینوسی و نقاط روی محور افقی

در عین حال برای حالت f(xl)f(xu)>0f(x_l) f(x_u) > 0

دو منحنی سینوسی در کنار هم

الگوریتم روش دو بخشی برای یافتن ریشه‌های معادله f(x)=0f(x) = 0

  1. انتخاب دو ریشه حدسی برای معادله بالا به‌عنوان xlx_l
  2. تخمین نقطه xmx_mنقطه میانی به‌عنوان ریشه دیگر و با در نظر گرفتن xm=xl+xu2x_m = frac{x_l+x_u}{2}
  3. اگر f(xl)f(xm)<0f(x_l) f(x_m) < 0
  4. اگر f(xl)f(xm)>0f(x_l) f(x_m) > 0
  5. اگر f(xl)f(xm)=0f(x_l) f(x_m) = 0

در ادامه به مثالی که با این روش حل شده است، دقت کنید.

مثال

با استفاده از روش دو بخشی و حدس اولیه 11 و 44، ریشه‌های معادله غیرخطی زیر را پس از دو تکرار پیدا کنید:

x3=20x^3 = 20

پاسخ

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

f(x)=x320=0f(x) = x^3 – 20 = 0

سپس چک می‌کنیم که آیا در دو مقدار 11 و 44 به‌عنوان xlx_l

f(1)=1320=19f(1) = 1^3 – 20 = -19

f(4)=4320=44f(4) = 4^3 – 20 = 44

پس شرط f(xl)f(xu)<0f(x_l) f(x_u) < 0

xm=xl+xu2=2.5x_m = frac{x_l+x_u}{2} = 2.5

برای انجام تکرار دوم، لازم است ابتدا مقدار تابع را در xmx_m

f(2.5)=(2.5)320=4.37f(2.5) = (2.5)^3 – 20 = -4.37

بنابراین f(xl)f(xm)>0f(x_l) f(x_m) > 0

xm=2.5+42=3.25x_m = frac{2.5+4}{2} = 3.25

روش نیوتن – رافسون

روش بعدی پیدا کردن ریشه‌های معادلات غیرخطی در محاسبات عددی، روش نیوتن – رافسون (Newton-Raphson Method) یا به اختصار روش نیوتن است. فرمولی که در این روش برای حل معادلات استفاده می‌شود به شکل زیر است:

xi+1=xif(xi)f(xi)x_{i+1} = x_i – frac{f(x_i)}{f^{‘}(x_i)}

مثال

با استفاده از روش نیوتن و حدس اولیه x0=3x_0 = 3

x3=20x^3 = 20

پاسخ

برای حل معادله f(x)=x320=0f(x) = x^3 – 20 = 0

f(x)=3x2f^{‘}(x) = 3x^2

حالا با توجه به حدس اولیه، فرمول روش نیوتن را برای تکرار اول می‌نویسیم:

x1=x0f(x0)f(x0)=3272027=2.74x_{1} = x_0 – frac{f(x_0)}{f^{‘}(x_0)} =3 – frac{27-20}{27}=2.74

در تکرار دوم، مجددا فرمول بالا را می‌نویسیم، با این تفاوت که یک واحد به ii اضافه می‌شود:

x2=x1f(x1)f(x1)=2.74(2.74)3203(2.74)2=2.71x_{2} = x_1 – frac{f(x_1)}{f^{‘}(x_1)} =2.74 – frac{(2.74)^3-20}{3(2.74)^2}=2.71

مسیر یادگیری معادلات دیفرانسیل با فرادرس

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

مجموعه آموزش معادلات دیفرانسیل – درس، تمرین، حل مثال و تست فرادرس
برای مشاهده مجموعه فیلم آموزش معادلات دیفرانسیل – درس، تمرین، حل مثال و تست فرادرس، روی تصویر کلیک کنید.
  1. فیلم آموزش معادلات دیفرانسیل با رویکرد حل مساله و تست کنکور ارشد فرادرس
  2. فیلم آموزش حل عددی معادلات دیفرانسیل جزئی به روش تفاضلات محدود در فرترن FORTRAN فرادرس
  3. فیلم آموزش حل معادلات دیفرانسیل با متمتیکا Mathematica فرادرس

معادلات دیفرانسیل معمولی (ODE)

در این بخش می‌آموزیم روش‌های مختلف حل معادلات دیفرانسیل معمولی یا ODE در محاسبات عددی چیست. معادلات دیفرانسیل معمولی کاربرد گسترده‌ای در حل مسائل مختلف علوم مهندسی دارند. برای مثال، اگر بخواهیم دمای یک گوی کروی حرارت داده شده را به عنوان تابعی از دما پیدا کنیم، باید یک معادله دیفرانسیل معمولی مرتبه اول را حل کنیم. به این ترتیب، فرمول‌بندی اغلب مسائل فیزیکی و مهندسی به شکل‌گیری یک معادله دیفرانسیل معمولی منجر می‌شود.تصویری از دو گوی طوسی رنگ

هر معادله‌ای که شامل مشتق‌های متغیرهای موجود در آن معادله باشد، یک معادله دیفرانسیل نامیده می‌شود. در حالت کلی معادلات دیفرانسیل طبق نمودار زیر دو نوع هستند:

نمودار انواع معادلات دیفرانسیل

در معادلات دیفرانسیل معمولی فقط یک متغیر مستقل مانند xx وجود دارد که متغیر وابسته yy به آن بستگی دارد. مثال‌های این نوع معادلات به شکل زیر است:

d2ydx2+2dydx+y=0,dydx(0)=2,y(0)=4frac{d^2y}{dx^2} + 2 frac{dy}{dx} +y = 0, frac{dy}{dx} (0) = 2, y(0) = 4

d3ydx3+3d2ydx2+5dydx+y=sinx,d2ydx2(0)=12,dydx(0)=2,y(0)=4frac{d^3y}{dx^3} + 3 frac{d^2y}{dx^2} +5frac{dy}{dx} +y = sin x, frac{d^2y}{dx^2} (0) = 12, frac{dy}{dx}(0)=2, y(0) = 4

تقسیم‌بندی معادلات دیفرانسیل معمولی بر مبنای درجه و مرتبه آن‌ها انجام می‌شود. مرتبه یک معادله دیفرانسیل معمولی معادل است با بالاترین مرتبه مشتق‌گیری در آن معادله، در حالی که درجه این نوع معادلات بر اساس توان بالاترین مشتق در این معادلات تعیین می‌شود. به این ترتیب معادله زیر یک معادله دیفرانسیل معمولی مرتبه سه و خطی یا درجه یک محسوب می‌شود:

x3d3ydx3+x2d2ydx2+xdydx+xy=exx^3frac{d^3y}{dx^3} + x^2 frac{d^2y}{dx^2} +xfrac{dy}{dx} +xy = e^x

در حالی که معادله زیر یک معادله دیفرانسیل معمولی از مرتبه یک و درجه دو است:

(dydx+1)2+x2dydx=sinx(frac{dy}{dx} +1)^2+x^2frac{dy}{dx} = sin x

برای اینکه این مبحث را از طریق حل مثال و تمرین بهتر بیاموزید، می‌توانید به مطلب «نمونه سوال معادلات دیفرانسیل» از مجله فرادرس مراجعه کنید که لینک آن در ادامه برای شما قرار داده شده است:

روش حل دقیق معادلات دیفرانسیل معمولی مرتبه اول

در این بخش می‌خواهیم نشان دهیم چگونه می‌توان یک معادله دیفرانسیل معمولی را با روش‌ کلاسیکی حل کرد. ابتدا فرم کلی چنین معادله‌ای را به شکل زیر در نظر می‌گیریم که در آن knk_n

dnydxn+kndn1ydxn1+...+k2d2ydx2+k1y=F(x)frac{d^{n}y}{dx^n} + k_n frac{d^{n-1}y}{dx^{n-1}} +…+k_2frac{d^2y}{dx^2} +k_1y = F(x)

راه‌حل کلی این معادله شامل دو بخش به شکل زیر است:

y=yH+yPy = y_H+ y_P

  • yHy_H
  • yPy_P

معادله دیفرانسیل معمولی همگن

این بخش از راه‌حل با صفر در نظر گرفتن سمت دیگر تساوی در معادله بالا به دست می‌آید. بنابراین yHy_H

dnydxn+kndn1ydxn1+...+k2d2ydx2+k1y=0frac{d^{n}y}{dx^n} + k_n frac{d^{n-1}y}{dx^{n-1}} +…+k_2frac{d^2y}{dx^2} +k_1y = 0

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

Dny+knDn1y+...+k2Dy+k1y=0D^ny +k_n D^{n-1}y + … +k_2Dy+k_1y = 0

(Dn+knDn1+...+k2D+k1)y=0(D^n +k_n D^{n-1} + … +k_2D+k_1)y = 0

که در آن داریم:

Dn=dndxnD^n = frac{d^n}{dx^n}

Dn1=dn1dxn1D^{n-1} = frac{d^{n-1}}{dx^{n-1}}

در این معادلات عمل روی yy با عبارت زیر معادل است که یکی پس از دیگری عمل می‌کنند:

(Dr1),(Dr2),(Drn)(D-r_1), (D-r_2), (D-r_n)

که در آن‌ها (Dr1),(Dr2),...,(Drn)(D-r_1), (D-r_2), …, (D-r_n)

Dny+knDn1+...+k2D+k1=0D^ny +k_n D^{n-1} + … +k_2D+k_1 = 0

از طرفی می‌دانیم معادله (D23D+2)y=0(D^2 -3D+2)y = 0

(D2)(D1)y=0(D-2)(D-1) y=0

(D1)(D2)y=0(D-1)(D-2) y=0

بنابراین معادله (Dny+knDn1+...+k2D+k1)y=0(D^ny +k_n D^{n-1} + … +k_2D+k_1)y = 0

(Drn)(Drn1)...(Dr1)y=0(D-r_n)(D-r_{n-1}) … (D-r_1)y = 0

حل چنین معادله‌ای بر اساس حالت‌های مختلفی به شرح زیر انجام می‌شود:

  1. ریشه‌ها حقیقی و متفاوت هستند.
  2. ریشه‌ها حقیقی و مشابه هستند.
  3. ریشه‌ها مختلط هستند.

ریشه‌های حقیقی و متفاوت

اگر (Dr1)y=0(D-r_1)y = 0معادله دیفرانسیل خطی و مرتبه اول لایبنیتس» گفته می‌شود که راه‌حل آن به شکل زیر است:

(Dr1)y=0(D-r_1)y = 0

dydx=r1yfrac{dy}{dx} = r_1y

dyy=r1dxlny=r1x+cy=cer1xfrac{dy}{y} = r_1dx Rightarrow ln y = r_1x+ c Rightarrow y = ce^{r_1x}

با توجه به اینکه هر کدام از این nn فاکتور می‌توانند قبل از yy قرار بگیرند، بنابراین nn راه‌حل مختلف و متناظر با این nn فاکتور مختلف توسط ضرایب زیر داده می‌شوند:

cnernx,cn1ern1x,...,c2er2x,c1er1xc_ne^{r_nx}, c_{n-1}e^{r_{n-1}x}, …, c_2e^{r_2x}, c_1e^{r_1x}

که در آن‌ها rn,rn1,...,r2,r1r_n,r_{n-1}, …, r_2,r_1

yH=c1er1x+c2er2x+...+cn1ern1x+cnernxy_H= c_1e^{r_1x}+ c_2e^{r_2x} + … + c_{n-1}e^{r_{n-1}x} + c_ne^{r_nx}

ریشه‌های حقیقی و مشابه

اگر دو ریشه یک معادله دیفرانسیل همگن مشابه باشند، برای مثال r1=r2r_1=r_2

(Drn)(Drn1)...(Dr1)(Dr1)y=0(D-r_n)(D-r_{n-1}) … (D-r_1)(D-r_1)y = 0

حال بیاید روی بخش (Dr1)(Dr1)y=0(D-r_1)(D-r_1)y = 0

z=c2er1xz = c_2e^{r_1x}

سپس راه‌حل بالا را در (Dr1)y=z(D-r_1)y = z

(Dr1)y=c2er1xdydxr1y=c2er1x(D-r_1)y =c_2e^{r_1x} Rightarrow frac{dy}{dx} -r_1y =c_2e^{r_1x}

d(er1xy)=c2dxRightarrow d(e^{r_1x}y ) =c_2dx

که با انتگرال‌گیری از دو طرف این رابطه خواهیم داشت:

er1xy=c2x+c1Rightarrow e^{r_1x}y =c_2x + c_1

y=(c2x+c1)er1xRightarrow y =(c_2x + c_1)e^{r_1x}

بنابراین راه‌حل نهایی معادله همگن در این بخش برابر است با:

yH=(c2x+c1)er1x+c3er3x+...+cnernxRightarrow y_H =(c_2x + c_1)e^{r_1x} +c_3e^{r_3x} + … + c_ne^{r_nx}

این روند برای دو ریشه مشابه بود. اگر mm ریشه مشابه هم داشتیم، پاسخ به این صورت است:

yH=(c1+c2x+c3x2+...+cmxm1)ermx+cm+1erm+1x+...+cnernxRightarrow y_H =( c_1+c_2x +c_3x^2+…+c_mx^{m-1})e^{r_mx} +c_{m+1}e^{r_{m+1}x} + … + c_ne^{r_nx}

ریشه‌های مختلط

اگر یک جفت از ریشه‌ها مختلط باشند، برای مثال r1=α+iβr_1 = alpha +i beta

yH=c1e(α+iβ)x+c2e(αiβ)x+c3rr3x+...+cnernxy_H = c_1e^{(alpha +i beta)x} +c_2e^{(alpha -i beta)x} +c_3r^{r_3x}+ … + c_ne^{r_nx}

اگر توابع نمایی را بر حسب سینوس و کسینوس بنویسیم، با در نظر گرفتن A=c1+c2A=c_1+ c_2

yH=eαx(Acosβx+Bsinβx)+c3rr3x+...+cnernxy_H = e^{alpha x} (Acos beta x + B sinbeta x)+c_3r^{r_3x}+ … + c_ne^{r_nx}

معادله دیفرانسیل معمولی ناهمگن

بار دیگر به معادله دیفرانسیل معمولی در ابتدای این بخش بازمی‌گردیم:

dnydxn+kndn1ydxn1+...+k2d2ydx2+k1y=F(x)frac{d^{n}y}{dx^n} + k_n frac{d^{n-1}y}{dx^{n-1}} +…+k_2frac{d^2y}{dx^2} +k_1y = F(x)

پاسخ ویژه این معادله از برابر قرار دادن سمت چپ این معادله با F(x)F(x) حاصل می‌شود:

dnydxn+kndn1ydxn1+...+k2d2ydx2+k1y=F(x)frac{d^{n}y}{dx^n} + k_n frac{d^{n-1}y}{dx^{n-1}} +…+k_2frac{d^2y}{dx^2} +k_1y = F(x)

(Dn+knDn1+kn1Dn2+...+k1)yP=F(x)(D^n+k_nD^{n-1}+k_{n-1}D^{n-2}+…+k_1)y_P = F(x)

تابع F(x)F(x) می‌تواند به‌صورت نمایی یا مثلثاتی یا ترکیبی از هر دو باشد. جدول زیر نشان می‌دهد بخش ویژه راه‌حل این معادله برای توابع مختلف در محاسبات عددی چیست:

F(x)F(x) yPy_P
a0+a1x+a2x2a_0+a_1x+a_2x^2 b0+b1x+b2x2b_0+b_1x+b_2x^2
eaxe^{ax} AeaxAe^{ax}
sin(bx)sin (bx) Asin(bx)+Bcos(bx)A sin (bx) + B cos (bx)
eaxsin(bx)e^{ax} sin (bx) eax(Asin(bx)+Bcos(bx))e^{ax} (A sin (bx) + B cos (bx))
cos(bx)cos (bx) Asin(bx)+Bcos(bx)A sin (bx) + B cos (bx)
eaxcos(bx)e^{ax} cos (bx) eax(Asin(bx)+Bcos(bx))e^{ax} (A sin (bx) + B cos (bx))

source

توسط expressjs.ir