محاسبات عددی – مفاهیم پایه به زبان ساده با مثال

۲۹۲ بازدید
آخرین به‌روزرسانی: ۷ اسفند ۱۴۰۳
زمان مطالعه: ۵۳ دقیقه
دانلود PDF مقاله
محاسبات عددی – مفاهیم پایه به زبان ساده با مثالمحاسبات عددی – مفاهیم پایه به زبان ساده با مثال

محاسبات عددی که با عنوان 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} به اندازه ϵ\epsilon به عدد bb نزدیک شده است که عددی مانند N0N \geq 0 وجود داشته باشد، طوری که برای تمام nNn \geq N داشته باشیم:

ajbϵ|a_j-b| \leq \epsilon

در این شرایط دنباله (aj)j=0(a_j)^{\infty}_{j=0} زمانی به bb همگرا می‌شود که به اندازه تمام مقادیر ϵ\epsilon بزرگتر از صفر (و هر چقدر کوچک) ممکن به bb نزدیک شده باشد. همگرایی این دنباله را می‌توانیم به شکل زیر نشان دهیم:

ajba_j\rightarrow b

limjaj=b\lim_{j \rightarrow \infty} a_j=b

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

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

  • اگر nn \rightarrow \infty، در این صورت en0e^{-n} \rightarrow 0 (همگرایی سریع به صفر).
  • اگر nn \rightarrow \infty، در این صورت nn+21\frac{n}{n+2} \rightarrow 1 (همگرایی آهسته به یک).
  • با اینکه (1)n(-1)^n محدود است، اما همگرا نمی‌شود.
  • اگر nn \rightarrow \infty، در این صورت lgn\lg{n} \rightarrow \infty (این دنباله واگرا است).

برای اینکه ثابت کنیم در آخرین مثال lgn\lg{n} همواره مقادیر دلخواه و بسیار بزرگی می‌پذیرد، با در نظر گرفتن هر عدد صحیح و بزرگی مانند mm، آیا همواره nn وجود دارد که به ازای آن داشته باشیم lgnm\lg{n} \geq m؟ پاسخ این سوال، بله است. کافی است nn را به‌صورت nemn \geq e^m در نظر بگیریم.

تعریف ۲

فرض کنید دنباله‌ای به‌صورت (aj)j=0(a_j)^{\infty}_{j=0} دارید. در این صورت می‌توانیم NNامین مجموع جزئی SNS_N را به شکل زیر تعریف کنیم:

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

در این تعریف زمانی سری jaj\sum_{j} a_j همگرا می‌شود که همزمان با NN \rightarrow \infty، دنباله مجموع جزئی SNS_N به عددی مانند bb همگرا شود. در این صورت می‌توانیم بنویسیم:

j=0aj=b\sum_{j=0}^{\infty} a_j = b

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

تعریف ۳

یک سری به فرم j=0aj\sum_{j=0}^{\infty} a_j مطلقا همگرا نامیده می‌شود، اگر j=0aj\sum_{j=0}^{\infty} |a_j| همگرا باشد. اگر یک سری مطلقا همگرا نباشد، اما واگرا هم نباشد، می‌گوییم این سری همگرای مشروط است. در حقیقت در این نوع همگرایی تناوب علامت‌های مثبت و منفی را در سری داریم که همین مسئله منجر به حذف برخی جملات حین جمع کردن و در نتیجه، همگرایی سری می‌شود. یکی از راه‌های بررسی و تست همگرایی یک سری استفاده از قضایایی با همین موضوع است که در بخش‌های بعدی بیان می‌شوند.

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

یک سری به شکل j=0(1)jaj\sum_{j=0}^{\infty} (-1)^{j}a_j را در نظر بگیرید که در آن تمام aja_jها بزرگتر از صفر و مثبت هستند. اگر aja_j به‌عنوان یک دنباله به 00 همگرا شود، در این صورت این سری همگراست. مشکل اصلی در مورد سری‌های همگرای مشروط این است که اگر جملات مجددا مرتب شوند، ممکن است سری به سمت مقدار حدی دیگری همگرا شود. بنابراین اگر بخواهیم با اطمینان بالا یک مجموع نامتناهی را در صورت متناهی بودن بررسی کنیم، بهتر است همگرایی آن مطلق باشد.

قضیه ۲

فرض کنید f:Z+Z+f: Z^+\rightarrow Z^+ نوعی تناظر دو طرفه باشد، یعنی ff آرایش مجددی از اعداد صحیح غیرمنفی است. حالا یک سری به شکل j=0aj\sum_{j=0}^{\infty} a_j در نظر بگیرید. اگر این سری مطلقا همگرا باشد، در این صورت داریم:

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,k\sum_{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 و gng_n داریم. در این صورت برای تمام n=0,1,2,...n=0,1,2,... داریم:

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

fn=O(gn)f_n=O(g_n) را به این صورت می‌خوانیم: fnf_n از مرتبه gng_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 و gn=n3g_n=n^3 است. در این صورت درستی هر کدام از سه مورد بالا را برای برای تمام n=0,1,2,...n=0,1,2,... بررسی کنید:

پاسخ

در اولین مورد باید یک CC بزرگتر از صفر و مثبتی وجود داشته باشد به‌طوری که fnCgn|f_n| \leq C|g_n| برقرار باشد تا بتوانیم بگوییم fn=O(gn)f_n=O(g_n). از آنجا که در ابتدا فرض کرده‌ایم دنباله‌های fnf_n و gng_n غیرصفر هستند، بنابراین برای عبارت n2Cn3|n^2| \leq C|n^3| نمی‌توانیم n=0n=0 را در نظر بگیریم. به‌ ازای n=1n=1 و C=1C=1 خواهیم داشت:

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

و برای n=2n=2 و C=1C=1 هم خواهیم داشت:

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

به این ترتیب درستی fnC(gn)|f_n| \leq C|(g_n)| به ازای یک CC بزرگتر از صفر و مثبت (C=1C=1) و برای تمام nnها به‌جز صفر برقرار است. پس می‌توانیم بگوییم n2=O(n3)n^2=O(n^3). در دومین مورد، ابتدا fngn\frac{f_n}{g_n} را به شکل زیر در نظر می‌گیریم:

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

بنابراین اگر nn \rightarrow \infty، در این صورت 1n0\frac{1}{n} \rightarrow 0. پس شرایط برای برقراری دومین مورد نیز فراهم است و داریم n2=o(n3)n^2=o(n^3). در سومین مورد باید علاوه‌بر n2=O(n3)n^2=O(n^3)، رابطه n3=O(n2)n^3=O(n^2) نیز برقرار باشد تا بتوانیم بگوییم fn=(gn)f_n=\ominus(g_n) یا n2=(n3)n^2=\ominus(n^3). درستی n3=O(n2)n^3=O(n^2) مستلزم وجود یک CC بزرگتر از صفر و مثبتی است که به ازای آن همواره داشته باشیم gnCfn|g_n| \leq C|f_n|. در حقیقت باید برای درستی gnCfnn3Cn2nC|g_n| \leq C|f_n| \Rightarrow |n^3| \leq C|n^2| \Rightarrow |n| \leq C مقدار مناسب CC را پیدا کنیم که چنین مقداری وجود ندارد. بنابراین n3O(n2)n^3\neq O(n^2) و در نتیجه n2(n3)n^2 \neq \ominus(n^3).

مثال ۲

درستی fn=O(gn)f_n=O(g_n) و fn=o(gn)f_n=o(g_n) و fn=(gn)f_n=\ominus(g_n) را به ازای تمام مقادیر n=0,1,2,...n=0,1,2,... و با در نظر گرفتن fn=nn+2f_n= \frac{n}{n+2} وgn=nn3g_n= \frac{n}{n-3} بررسی کنید:

پاسخ

طبق تعریف برای برقراری fn=O(gn)f_n=O(g_n) لازم است یک CC بزرگتر از صفر و مثبتی وجود داشته باشد به‌طوری که fnCgn|f_n| \leq C|g_n| برقرار باشد:

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

چون لازم است دنباله‌های fnf_n و gng_n غیرصفر باشند، بنابراین n=0n=0 نمی‌تواند برای این بررسی انتخاب درستی باشد. اما برای سایر مقادیر nn، برای مثال برای n=1n=1 و C=1C=1 و با در نظر گرفتن اثر قدر مطلق خواهیم داشت:

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

پس درستی fnCgn|f_n| \leq C|g_n| برای این دو دنباله برقرار است و می‌توانیم بگوییم fn=O(gn)f_n=O(g_n). در ادامه برقراری fn=o(gn)f_n=o(g_n) نیز مستلزم این است که با میل کردن nn به سمت بی‌نهایت، حاصل fngn\frac{f_n}{g_n} نیز به سمت صفر میل کند:

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

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

در نتیجه دومین مورد برای این دو دنباله صحیح نیست و داریم fno(gn)f_n \neq o(g_n). در نهایت برای اینکه داشته باشیم fn=(gn)f_n=\ominus(g_n)، لازم است درستی هر دو عبارت fn=O(gn)f_n=O(g_n) و gn=O(fn)g_n=O(f_n) برقرار باشد. اولین مورد در بخش اول بررسی شد، اما برای بررسی دومین مورد یعنی gn=O(fn)g_n=O(f_n)، باید یک CC بزرگتر از صفر و مثبتی پیدا کنیم، طوری که gnCfn|g_n| \leq C|f_n|. باز هم چون لازم است دنباله‌های fnf_n و gng_n غیرصفر باشند، بنابراین n=0n=0 نمی‌تواند برای این بررسی انتخاب درستی باشد. اما برای سایر مقادیر nn، برای مثال برای n=1n=1 و C=2C=2 و با در نظر گرفتن اثر قدر مطلق خواهیم داشت:

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) و در نتیجه fn=(gn)f_n=\ominus(g_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.1 همان nn فاکتوریل است. دقت کنید بسط تیلور را برای هر تابعی نمی‌توانیم بنویسیم. برای اینکه بتوانیم بسط تیلور تابعی مانند 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 _{z\in [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 است. همچنین حد ضمنی در نماد OO بزرگ به‌صورت xa0x-a \rightarrow 0 است.

نکته ۲: فرمول 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=02j\sum_{j=0}^{\infty} 2^{-j} که برای مثال شامل جملاتی به‌صورت 1+12+14+18+...1+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+... است، به لیمیت 22 همگرا می‌شود.

پاسخ

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

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

حال اجازه دهید با استقرا نشان دهیم که SN=22NS_N= 2 - 2^{-N}. با قرار دادن N=0N=0، جمله پایه به‌درستی برابر با 11 محاسبه می‌شود، چون داریم:

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

پس با توجه به استقرا می‌توانیم SNS_N به شکلی که در صورت سوال داده شده است را با 22N2 - 2^{-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 مجموع جزئی با logN\log{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=11nq\sum_{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} را می‌توانیم به دو گروه به شکل زیر تقسیم کنیم، طوری که برای j1j \geq1 داریم:

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

طبق نامساوی 1j(j+1)1j2\frac{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}. هر دو جمله SNS_N و 1N+1\frac{1}{N+1} دنباله‌های همگرایی هستند. بنابراین مجموع آن‌ها نیز همگرا است. پس همگرایی ثابت شد. همچنین مقدار همگرایی برای سری 112+1314+1516+...=log21-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+\frac{1}{5}-\frac{1}{6}+... = \log 2 است. این سری حالت خاصی از بسط تیلور log(1+x)\log ‌(1+x) حول x=0x=0 با در نظر گرفتن x=1x=1 محسوب می‌شود.

مثال ۵

مجددا سری 1314+1516+...\frac{1}{3}-\frac{1}{4}+\frac{1}{5}-\frac{1}{6}+... را در نظر بگیرید که همان‌طور که در مثال قبل دیدیم برابر است با log2(112)=log212=0.193147...\log 2- (1-\frac{1}{2})= \log 2-\frac{1}{2}=0.193147.... آیا این سری همگرا است؟

پاسخ

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

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)dx\int_{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)dx\int_{0}^{1} f (x) dx = \sum_{j=1}^N \int_{x_j-1}^{x_j} f (x) dx

اگر انتگرال‌ها را با مقادیری که فقط به نمونه‌های f(xj)f(x_j) تابع ff روی شبکه xjx_j بستگی دارند، تقریب بزنیم، در این صورت می‌گوییم انتگرال عددی یا یک‌چهارم محاسبه شده است. برای مثال، انتگرال تابع ff را روی بازه [xj1,xj][x_{j-1},x_j] می‌توانیم به این صورت تقریب بزنیم که مساحت مستطیلی با ارتفاع f(xj1)f(x_{j-1}) و عرض hh را محاسبه کنیم:

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)dx\int_{x_{j-1}}^{x_j} f (x) dx طبق بسط تیلور و حول نقطه x=xj1x =x_{j-1} بسط می‌دهیم:

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]. در نوشتار بالا yy را به شکل تابعی از xx نوشتیم تا روی این نکته تاکید کرده باشیم. این رابطه مادامی که ff یک مشتق داشته باشد، برقرار است. با انتگرال‌گیری از دو طرف این رابطه و در نظر گرفتن این نکته که f(xj1)f(x_{j-1}) نسبت به xx ثابت است و xjxj1=hx_j -x_{j-1} = h، خواهیم داشت:

xj1xjf(x)dx=hf(xj1)+hxj1xjf(y(x))dx\int_{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 _{y\in [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 _{y\in [x_{j-1},x_j]} \ |f^{'}(y) | \int_{x_{j-1}}^{x_j} 1dx = h^2 \ max _{y\in [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) با هم ترکیب می‌شوند، چون h=1Nh = \frac{1}{N}. پس با کمک گرفتن از بسط تیلور توانستیم درستی عبارت زیر را نشان دهیم:

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} نقطه xj12=h(j12)x_{j-\frac{1}{2}} = h (j-\frac{1}{2}) را در نظر بگیریم. در این حالت خواهیم داشت:

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^{''} در نماد OO بزرگ مخفی شده است. در این روش از این جهت دقت محاسبات بالاتر است که با میل کردن hh به‌ سمت صفر، h2h^2 نسبت به hh بیشتر کوچک می‌شود. به همین علت روش نقطه میانی را یک روش مرتبه دوم می‌نامیم. بنابراین روش نقطه میانی برای محاسبه مجموع ریمان در بیشتر تقریب‌هایی که بر پایه مجموع مساحت مستطیل‌ها محاسبه می‌شوند، بهتر کار می‌کند. تعریف دقیق قانون نقطه میانی به شکل زیر است:

اگر تابع f(x)f(x) روی بازه بسته‌ای به شکل [a,b][a,b] تعریف شده باشد و بتوانیم این بازه را به nn زیربازه با طول مساوی به شکل x=ban\triangle x= \frac{b-a}{n} تقسیم کنیم، در این صورت با کاربرد n+1n+1 نقطه به شکل xi=a+ixx_i= a + i \triangle x که برابر می‌شوند با x0=a,x1=a+x,...,xn1=a+(n1)x,xn=bx_0= a , x_1 = a + \triangle x , ... , x_{n-1} = a + (n-1) \triangle x, x_n = b، انتگرال abf(x)dx\int_{a}^{b} f(x) dx با تقریب برابر خواهد شد با:

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

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

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

همچنین در مورد محاسبه تقریبی انتگرال‌های عددی مطلوب این است که خطا تابعی از x\triangle x و به‌صورت E=E(E = E( \triangle x )) باشد. در این صورت با کوچک شدن x\triangle x، خطا هم به‌سرعت کاهش خواهد یافت. خوشبختانه برای اغلب توابع، چنین کران خطای متناظری برای تقریب روش میانی وجود دارد. تعریف دقیق‌تر خطا در روش تقریب نقطه میانی به شکل زیر است:

فرض کنید تابع ff دارای مشتق دومی به‌صورت ff^{''} در هر نقطه از بازه [a,b][a,b] است و برای تمام xx‌های این بازه همواره عبارت f(x)M|f^{''}(x)| \leq M نیز برقرار است. با در نظر گرفتن x=ban\triangle x= \frac{b-a}{n}، کران خطا برای تقریب نقطه میانی برابر خواهد شد با:

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] سعی می‌کنیم انتگرال عددی خود را حل کنیم. مساحت ذوزنقه‌ای که از چهار نقطه به شکل (xj1,0),(xj1,f(xj1)),(xj,f(xj)),(xj,0)(x_{j-1}, 0) , (x_{j-1}, f(x_{j-1})), (x_j, f(x_j)), (x_j, 0) ساخته می‌شود برابر است با:

h(f(xj1)+f(xj))2\frac{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=ban\triangle x= \frac{b-a}{n} تقسیم کنیم. به این ترتیب ذوزنقه‌های تشکیل شده دارای مساحتی به شکل زیر هستند:

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

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

f(x0)+f(x1)2x+f(x1)+f(x2)2x+...+f(xn1)+f(xn)2x\frac{ 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=ban\triangle x= \frac{b-a}{n} تقسیم کنیم، در این صورت با کاربرد n+1n+1 نقطه به شکل xi=a+ixx_i= a + i \triangle x که برابر می‌شوند با x0=a,x1=a+x,...,xn1=a+(n1)x,xn=bx_0= a , x_1 = a + \triangle x , ... , x_{n-1} = a + (n-1) \triangle x, x_n = b، انتگرال abf(x)dx\int_{a}^{b} f(x) dx با تقریب برابر خواهد شد با:

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^{''} در هر نقطه از بازه [a,b][a,b] است و برای تمام xx‌های این بازه همواره عبارت f(x)M|f^{''}(x)| \leq M نیز برقرار است. با در نظر گرفتن x=ban\triangle x= \frac{b-a}{n}، کران خطا برای تقریب نقطه میانی برابر خواهد شد با:

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

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

روش سیمپسون

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

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

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

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

حالا اگر بازه بسته [a,b][a,b] را به تعداد زوجی زیربازه تقسیم کنیم، می‌توانیم منحنی تابع را با چند سهمی جایگزین تقریب بزنیم که هر کدام بخشی از زیربازه‌های ایجاد شده را پوشش می‌دهد. اما اول باید فرمول مساحت زیر یک منحنی سهمی شکل را بدانیم. برای به‌دست آوردن چنین فرمولی لازم است معادله سهمی یعنی y=ax2+bx+cy = ax^2 + bx +c را طوری بنویسیم که از سه نقطه در نظر گرفته شده یعنی (xi,f(xi))(x_{i} , f(x_{i})) و (xi+1,f(xi+1))(x_{i+1} , f(x_{i+1})) و  (xi+2,f(xi+2))(x_{i+2} , f(x_{i+2})) عبور کند و سپس از آن انتگرال‌گیری کنیم. البته محاسبات جبری در این سطح کمی پیچیده است و می‌توانیم از کامپیوترها کمک بگیریم.

ابتدا باید سه معادله زیر را برای 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=ban\triangle x= \frac{b-a}{n} تقسیم کنیم، در این صورت با کاربرد n+1n+1 نقطه به شکل xi=a+ixx_i= a + i \triangle x که برابر می‌شوند با x0=a,x1=a+x,...,xn1=a+(n1)x,xn=bx_0= a , x_1 = a + \triangle x , ... , x_{n-1} = a + (n-1) \triangle x, x_n = b، انتگرال abf(x)dx\int_{a}^{b} f(x) dx با تقریب برابر خواهد شد با:

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 نیز برقرار است. با در نظر گرفتن x=ban\triangle x= \frac{b-a}{n}، کران خطا برای تقریب سیمپسون برابر خواهد شد با:

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 را در بازه [0,1][0,1] و با در نظر گرفتن N=4N=4 به دو روش ذوزنقه‌ای و مستطیلی محاسبه کنید:

پاسخ

می‌دانیم حاصل این انتگرال با استفاده از فرمول‌‌های انتگرال‌گیری برابر است با 01x2dx=x32+101=13\int_{0}^{1} x^2 dx = \frac{x^3}{2+1} |_{0}^{1} =\frac{1}{3}. می‌خواهیم ببینیم با این دو روش تقریبی جواب‌‌های به‌دست آمده چقدر به 13\frac{1}{3} نزدیک هستند. در روش مستطیلی، برای N=4N=4 مقدار hh برابر می‌شود با h=1N=14h = \frac{1}{N} = \frac{1}{4}. حال اگر چند نقطه در شبکه به‌صورت x=0,14,12,34,1x = 0, \frac{1}{4} , \frac{1}{2} ,\frac{3}{4}, 1 در نظر بگیریم و فرض کنیم هر مستطیل دارای طولی است که xj1x_{j-1} آخرین نقطه باقی مانده آن است، در این صورت داریم:

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...

این عدد از 13\frac{1}{3} فاصله زیادی دارد. پس می‌توانیم بگوییم با در نظر گرفتن تقریب مرتبه اول پاسخ خیلی دقیق نشد. در روش ذوزنقه‌ای هم همین نقاط را انتخاب می‌کنیم، با این تفاوت که در اینجا نقطه x=1x=1 هم در نظر گرفته می‌شود:

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...

این جواب به 13\frac{1}{3} نزدیکتر است. پس با در نظر گرفتن تقریب مرتبه دوم یا O(h2)O(h^2) پاسخ دقیق‌تری به دست آوردیم.

مثال ۲

حاصل انتگرال 01ex2dx\int_{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)| دارای مقدار ماکزیممی به اندازه 22 است. بنابراین شروع می‌کنیم به پیدا کردن تعداد زیربازه‌هایی که برای تقریب زدن این انتگرال نیاز داریم. برای اینکه حاصل انتگرال را تا دومین رقم اعشار به‌دست آوریم، قطعا باید E(x)<0.005E (\triangle x) < 0.005 یا:

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

16(200)<n2\frac{1}{6} (200) < n^2

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

با در نظر گرفتن n=6n=6، کران خطا برابر خواهد شد با 163<0.0047\frac{1}{6^3} < 0.0047. بنابراین تقریب ذوزنقه‌ای را برای شش بازه به شکل زیر محاسبه خواهیم کرد:

abf(x)dx16[f(0)2+f(16)+f(26)+...+f(56)+f(1)2]0.74512\int_{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 و 0.74512+0.0047=0.749820.74512 + 0.0047 = 0.74982 قرار دارد. اما اگر بخواهیم به این سوال پاسخ دقیق‌تری داده باشیم، با دقت در دو پاسخ به دست آمده مشخص می‌شود که مقدار واقعی اول به سمت 0.740.74 و مقدار واقعی دوم به سمت 0.750.75 گرد می‌شوند که اعداد یکسانی نیستند. بنابراین از دومین رقم اعشاری در پاسخ به‌دست آمده مطمئن نیستیم.

راه‌حل چنین مشکلی این است که nn بزرگتری انتخاب کنیم. برای مثال، با در نظر گرفتن n=12n=12 احتمالا دو کرانی خواهیم داشت که هر دو به سمت مقدار یکسانی گرد می‌شوند. همینجا به‌عنوان تمرین می‌توانید نشان دهید که کاربرد تقریب n=12n=12 مستطیل برای محاسبه مساحت ما را به عدد 0.77270.7727 می‌رساند که در مقایسه با حاصل به‌دست آمده بر اساس تقریب n=6n=6 ذوزنقه عدد کم دقت‌تری است. بهترین روشی که در اینجا می‌توانستیم از ابتدا در پیش بگیریم این بود که E(x)<0.001E (\triangle x) < 0.001 را در نظر داشته باشیم:

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

16(1000)<n2\frac{1}{6} (1000) < n^2

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

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

مثال ۳

حاصل انتگرال 01ex2dx\int_{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. اما با توجه به سرنخی که از مثال قبلی به‌دست آوردیم، انتخاب بهتر E(x)<0.001E (\triangle x) < 0.001 است:

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

13(200)<n4\frac{1}{3} (200) < n^4

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

چون لازم است تعداد زیربازه‌ها زوج باشند، پس با در نظر گرفتن n=4n=4، کران خطا برابر خواهد شد با 1218044<0.0003\frac{ \frac{12}{180} }{4^4} < 0.0003. بنابراین تقریب سیمپسون خواهد شد:

[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 و 0.746855+0.0003=0.74715550.746855 + 0.0003 = 0.7471555 قرار می‌گیرد. هر دو کران خطا به سمت عدد 0.750.75 گرد می‌شوند. بنابراین اگر این مثال را با مثال قبل مقایسه کنید متوجه خواهید شد که چقدر دقت این روش تقریبی در مقایسه با سایر روش‌های تقریبی حل انتگرال‌ها در محاسبات عددی بالاتر است. به‌ویژه اینکه برای رسیدن به این پاسخ در روش ذوزنقه‌ای نیاز داشتیم از تعداد جملات خیلی بیشتری استفاده کنیم در حالی که در این روش تنها با چهار جمله به همان پاسخ رسیدیم.

مثال ۴

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

24x3dx\int_{2}^{4} x^3 dx

پاسخ

روی بازه بسته [2,4][2,4] با در نظر گرفتن n=4n=4، برای x\triangle x خواهیم داشت:

x=ban=424=12\triangle 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]=2434\int_{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 روی بازه [2,4][2,4] برقرار است، چون داریم:

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

می‌بینیم که نامساوی f(x)<6(4)=24|f^{''} (x) | < 6(4)=24 روی این بازه برقرار است. بنابراین MM را برابر با 2424 می‌گیریم و بر همین اساس قاعده ذوزنقه‌ای پاسخ زیر را به ما خواهد داد:

24x3dx=2434±1\int_{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]=60\int_{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) تابعی مانند uu از نمونه‌ای مانند uj=u(xj)u_j = u (x_j) این است که تعداد متناهی نسبت‌های تفاضلی تشکیل دهیم.

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

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

+uj=uj+1ujh\triangle_{+}u_j = \frac{u_{j+1} - u_j}{h}

uj=ujuj1h\triangle_{-}u_j = \frac{u_{j} - u_{j-1}}{h}

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

0uj=uj+1uj2h\triangle_{0}u_j = \frac{u_{j+1} - u_j}{2h}

حالا می‌خواهیم دقت این تفاضل‌ها را در مشتق‌های تقریبی و در شرایطی که h0h \rightarrow 0، بررسی کنیم. برای شروع فرض کنید xj1=hx_{j-1} = -h و xj=0x_j= 0 و xj+1=hx_{j+1} = h. برای محاسبه تفاضل راست، از بسط تیلور حول نقطه صفر استفاده می‌کنیم و در نتیجه به عبارت زیر برای تابع uu خواهیم رسید:

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+uj1h2\triangle^{2}u_j = \frac{u_{j+1} -2 u_j + u_{j-1}}{h^2}

که در آن 2=+=+\triangle^{2} = \triangle _+\triangle_-= \triangle_-\triangle_+. در حقیقت در این رابطه فرمول سه نقطه‌ای برای تفاضل دوم با محاسبه تفاضل راست از چپ یا بطور مشابه به‌دست می‌آید.

چون 2\triangle^{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+h\triangle_{+} f(x) = \frac{(x+h)^2 - x^2 }{h} = 2x + h

f(x)=x2(xh)2h=2xh\triangle_{-} f(x) = \frac{x^2 - (x-h)^2 }{h} = 2x - h

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

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

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

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

در سومین بخش از مباحث محاسبات عددی، به توضیح درون‌یابی یا 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 نقطه به‌صورت xjϵRx_j \epsilon R و 0jN0 \leq j \leq N داریم و مقادیر نمونه یک تابع در این نقاط برابر است با yj=f(xj)y_j = f(x_j). درون‌یابی چند جمله‌ای مستقیم در این حالت مسئله‌ای است که در آن باید یک چند جمله‌ای به شکل pN(x)p_N(x) با درجه NN را پیدا کنیم، طوری که مقادیری برابر با yj=pN(xj)y_j = p_N(x_j) را برای j=0,...,Nj = 0,...,N بازتولید کند. به عبارت دیگر، نمودار چند جمله‌ای باید از نقاطی به شکل (xj,yj)(x_j,y_j) عبور کند.

می‌دانیم تعریف یک چند جمله‌ای درجه 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 برقرار است. در این N+1N+1 معادله که با نماد jj اندیس‌گذاری شده‌اند، مجهولات ما ضرایب a0,...,aNa_0,...,a_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، مقادیر سمت راست yjy_j و ماتریس VV را استخراج کنیم و به این ترتیب چنین سیستمی را به شکل a=Vya =\frac{V}{y} و به‌صورت عددی در متلب حل می‌کنیم. بنابراین ضرایب چند جمله‌ای موردنظر ما به این روش به‌دست خواهند آمد و حالا می‌توانیم آن را بین نقاط شبکه‌ 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] گرفته شده است. حالا با در نظر گرفتن pNp_N به‌صورت یک فضای چند جمله‌ای‌ با NN درجه آزادی به شکل pN={n=0Nanxn:anR}p_N = \left\{ \sum_{n=0}^N a_nx^n : a_n \in R\right\}، می‌خواهیم ببینیم روش حل مسئله درون‌یابی چند جمله‌ای در محاسبات عددی چیست. اجازه دهید مجموعه {xj,j=0,...,N}\left\{ x_j, j = 0, ... , N \right\} را به‌عنوان مجموعه‌ای از اعداد گسسته در نظر بگیریم که در آن برای هر k=0,...,Nk = 0, ..., N، یک چند جمله‌ای خاص مانند Lk(x)L_k(x) از درجه NN وجود دارد به گونه‌ای که داریم:

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

در این روند با ثابت در نظر گرفتن kk می‌توانیم بگوییم LkL _k دارای ریشه‌هایی در xjx_j برای تمام jkj\neq k است، بنابراین LkL _k باید به شکل زیر باشد:

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

با ارزیابی این عبارت در x=xkx=x_k، به روابط زیر می‌رسیم:

1=Cjk(xkxj)1 = C \prod_{j\neq k} (x_k-x_j)

C=1jk(xkxj)C = \frac{1}{\prod_{j\neq k} (x_k-x_j)}

بنابراین تنها عبارت ممکن برای Lk(x)L_k(x) به شکل زیر خواهد شد:

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

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

قضیه درون‌یابی لاگرانژ: اگر {xj,j=0,...,N}\left\{ x_j, j = 0, ... , N \right\} مجموعه‌ای از اعداد گسسته و حقیقی و {yj,j=0,...,N}\left\{ y_j, j = 0, ... , N \right\} مجموعه‌ای از اعداد حقیقی باشد، در این صورت یک pNPNp_N\in P_N خاص داریم به گونه‌ای که رابطه زیر برقرار است:

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) و (x1,y1)(x_1, y_1) و ... و (xn,yn)(x_n, y_n) همان داده‌های نقطه‌ای ما هستند. برای تعیین اسپلاین خطی جهت درون‌یابی این داده‌ها باید یک خط مستقیم بین هر دو نقطه رسم کنیم. علت نامگذاری این نوع اسپلاین به شکل خطی یا درجه یک، رسم خط مستقیم بین نقاط است.

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

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

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_0\leq x \leq x_1

f(x)=a2x2+b2x+c2   x1xx2f(x) = a_2x^2 + b_2x + c_2 \ \ \ x_1\leq 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 معادله داریم. آخرین معادله با توجه به این نکته که اولین جمله در تابع اسپلاین مربعی خطی است (a1=0a_1=0)، به‌دست می‌آید.
نمودار منحنی شکل به رنگ آبی و نقاط مختلف روی آن
اسپلاین مربعی

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

در بخش قبل آموختیم روش‌های مختلف درون‌یابی مانند چند جمله‌ای‌های اولیه لاگرانژ یا روش اسپلاین در محاسبات عددی چیست. در این قسمت با توضیح یک قضیه نشان می‌دهیم روش بررسی خطای درون‌یابی در محاسبات عددی چگونه است. فرض کنید رابطه fϵCN+1[a,b]f\epsilon C^{N+1} [a,b] برای تمام NNهای مثبت برقرار است. همچنین فرض کنید {xj,j=0,...,N}\left\{ x_j, j = 0, ... , N \right\} مجموعه‌ای از اعداد گسسته و حقیقی در بازه بسته [a,b][a,b] است. با در نظر گرفتن pNp_N به‌عنوان چند جمله‌ای درون‌یابی لاگرانژ تابع ff در xjx_j، برای هر x[a,b]x \in [a,b] همواره ξ(x)[a,b]\xi(x) \in [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 شود، برای برخی از jjها خطای درون‌یابی برابر با صفر خواهد شد.

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

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

مثال ۱

فرض کنید مقادیر سرعت موشکی بر حسب زمان در قالب جدولی به شکل زیر داده شده است. سرعت این موشک را در زمان t=16 st = 16 \ s با استفاده از روش درون‌یابی مستقیم و در دو حالت با کاربرد چند جمله‌ای خطی و درجه دو پیدا کنید:

t(s)t(s)v(t)(ms)v(t) (\frac{m}{s})
0000
1010227.04227.04
1515362.78362.78
2020517.35517.35
22.522.5602.97602.97
3030901.67901.67

پاسخ

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

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

چون از یک چند جمله‌ای خطی استفاده کرده‌ایم، پس کافی است دو نقطه را که به لحظه t=16 st = 16 \ s نزدیک‌تر هستند، انتخاب کنیم، برای مثال نقاط t0=15 st_0= 15 \ s و t1=20 st_1= 20 \ 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 برقرار است. پس سرعت در لحظه t=16 st= 16 \ 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 نزدیک‌تر هستند، انتخاب کنیم، برای مثال نقاط t0=10 st_0= 10 \ s و t1=15 st_1= 15 \ s و t2=20 st_2= 20 \ 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) و (x2,y2)(x_2,y_2) چگونه است؟

پاسخ

چندجمله‌ای 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_{j\neq k} (x-x_j)}{\prod_{j\neq 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 داریم. به کمک یک سهمی (N=2N=2) این تابع را در سه نقطه x0=1x_0 = -1 و x1=0x_1 = 0 و x2=1x_2= 1 درون‌یابی کنید:

پاسخ

ابتدا جمله اولیه لاگرانژ را به شکل زیر و طبق Lk(x)=jk(xxj)jk(xkxj)L_k(x) = \frac{\prod_{j\neq k} (x-x_j)}{\prod_{j\neq 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 روی بازه بسته‌ای مانند [1,1][-1,1] بکار رود، بسط تیلور حول نقطه x=0x=0 است:

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

مثال ۴

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

پاسخ

برای استفاده از اسپلاین خطی نیاز داریم دو داده نقطه‌ای نزدیک به نقطه t=16 st = 16 \ s در نظر بگیریم. بهترین انتخاب‌ها نقاط t0=15 st_0= 15 \ s و t1=20 st_1= 20 \ s هستند. مقادیر سرعت متناظر با این نقاط در سوال مشخص شده‌اند. بنابراین کافی است تابع اسپلاین خطی f(x)f(x) را همان تابع سرعت بر حسب زمان یعنی v(t)v(t) در نظر بگیریم. پس خواهیم داشت:

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.99\times 10^{-4} -0.165x^2+x^3 = 0

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

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

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

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

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

و با توجه به مقدار عبارت b24acb^2-4ac، ریشه‌های این معادله ممکن است حقیقی، مختلط یا تکراری باشند:

  • اگر b24ac\sqrt{b^2-4ac} مثبت باشد، ریشه‌ها حقیقی هستند.
  • اگر b24ac\sqrt{b^2-4ac} منفی باشد، ریشه‌ها مختلط هستند.
  • اگر b24ac\sqrt{b^2-4ac} مساوی با صفر باشد، ریشه‌ها حقیقی و تکراری هستند.

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

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

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

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

روش دو بخشی

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

معادله‌ای به شکل f(x)=0f(x) = 0 را در نظر بگیرید که در آن f(x)f(x) یک تابع پیوسته حقیقی است. این معادله حداقل یک ریشه بین xlx_l و xux_u دارد، اگر f(xl)f(xu)<0f(x_l) f(x_u) < 0.

  • اگر f(xl)f(xu)>0f(x_l) f(x_u) > 0، در این صورت ممکن است بین xlx_l و xux_u ریشه‌ای داشته باشیم، همچنان که ممکن است بین xlx_l و xux_u هیچ ریشه‌ای نداشته باشیم.
  • اگر f(xl)f(xu)<0f(x_l) f(x_u) < 0، در این صورت ممکن است بین xlx_l و xux_u بیشتر از یک ریشه هم داشته باشیم، اما وجود یک ریشه قطعی است.

همان‌طور که مشاهده می‌کنید، اگر مقدار تابع در دو نقطه xlx_l و xux_u تغییر علامت دهد، در این صورت حتما یک ریشه داریم و تابع ما حداقل در یک نقطه محور افقی را قطع می‌کند:

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

اما همان‌طور که گفتیم اگر f(xl)f(xu)<0f(x_l) f(x_u) < 0، حداقل یک ریشه داریم. این به این معنا است که ممکن است بیشتر از یک ریشه هم داشته باشیم. در شکل زیر مشاهده می‌کنید که بین دو نقطه xlx_l و xux_u با توجه به تغییر علامت دادن مقدار تابع در این دو نقطه، سه ریشه وجود دارد:

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

این در حالی است که اگر تابع پیوسته موردنظر ما در این دو نقطه تغییر علامت ندهد، همچنان ممکن است برای معادله f(x)=0f(x) = 0 بین این دو نقطه ریشه داشته باشیم. برای مثال، در شکل زیر مشاهده می‌کنید با اینکه مقدار تابع f(x)f(x) برای هر دو نقطه xlx_l و xux_u مثبت است، اما در فاصله بین این دو نقطه تابع ff محور افقی را در دو نقطه قطع کرده است. پس دو ریشه داریم:

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

در عین حال برای حالت f(xl)f(xu)>0f(x_l) f(x_u) > 0 ممکن است طبق شکل‌های زیر هیچ ریشه‌ای نداشته باشیم:

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

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

  1. انتخاب دو ریشه حدسی برای معادله بالا به‌عنوان xlx_l و xux_u طوری که برای آن‌ها f(xl)f(xu)<0f(x_l) f(x_u) < 0 برقرار باشد.
  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، در این صورت ریشه بین xlx_l و xmx_m قرار می‌گیرد: xl=xlx_l = x_l و xm=xux_m = x_u.
  4. اگر f(xl)f(xm)>0f(x_l) f(x_m) > 0، در این صورت ریشه بین xux_u و xmx_m قرار می‌گیرد: xu=xux_u = x_u و xm=xlx_m = x_l.
  5. اگر f(xl)f(xm)=0f(x_l) f(x_m) = 0، در این صورت ریشه xmx_m درست است و الگوریتم متوقف می‌شود.

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

مثال

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

x3=20x^3 = 20

پاسخ

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

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

سپس چک می‌کنیم که آیا در دو مقدار 11 و 44 به‌عنوان xlx_l و xux_u در این سوال، آیا مقدار تابع تغییر علامت می‌دهد یا خیر:

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 برقرار است. حالا اولین تکرار را با در نظر گرفتن xl=1x_l = 1 و xu=4x_u = 4 شروع می‌کنیم:

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 برقرار است و در نتیجه ریشه ما بین xux_u و xmx_m یا 44 و 2.52.5 قرار می‌گیرد. پس تخمین xmx_m به شکل زیر خواهد شد:

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، ابتدا باید مشتق x320x^3 - 20 را محاسبه کنیم:

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)=4\frac{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)=4\frac{d^3y}{dx^3} + 3 \frac{d^2y}{dx^2} +5\frac{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^3\frac{d^3y}{dx^3} + x^2 \frac{d^2y}{dx^2} +x\frac{dy}{dx} +xy = e^x

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

(dydx+1)2+x2dydx=sinx(\frac{dy}{dx} +1)^2+x^2\frac{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_2\frac{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=0\frac{d^{n}y}{dx^n} + k_n \frac{d^{n-1}y}{dx^{n-1}} +...+k_2\frac{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، یک راه‌حل ممکن برای معادله همگن ما است. اصولا به معادله‌ای با فرم (Dr1)y=0(D-r_1)y = 0 «معادله دیفرانسیل خطی و مرتبه اول لایبنیتس» گفته می‌شود که راه‌حل آن به شکل زیر است:

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

dydx=r1y\frac{dy}{dx} = r_1y

dyy=r1dxlny=r1x+cy=cer1x\frac{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 ریشه‌های معادله y=cer1xy = ce^{r_1x} هستند و cn,cn1,...,c2,c1c_n,c_{n-1}, ..., c_2,c_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 کار کنیم. اگر (Dr1)y=z(D-r_1)y = z، در این صورت (Dr1)z=0(D-r_1)z = 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)=c2dx\Rightarrow d(e^{r_1x}y ) =c_2dx

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

er1xy=c2x+c1\Rightarrow e^{r_1x}y =c_2x + c_1

y=(c2x+c1)er1x\Rightarrow y =(c_2x + c_1)e^{r_1x}

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

yH=(c2x+c1)er1x+c3er3x+...+cnernx\Rightarrow 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+...+cnernx\Rightarrow 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 و r2=αiβr_2 = \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 و B=i(c1c2)B=i (c_1- c_2) خواهیم داشت:

yH=eαx(Acosβx+Bsinβx)+c3rr3x+...+cnernxy_H = e^{\alpha x} (A\cos \beta x + B \sin\beta 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_2\frac{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_2\frac{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^2b0+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))
بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
MITSFUMath.libretextsWikipedia
دانلود PDF مقاله
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *