قاعده سیمپسون — به زبان ساده (+ دانلود فیلم آموزش گام به گام)
۱۰۰۹۴ بازدید
آخرین بهروزرسانی: ۱۸ اردیبهشت ۱۴۰۲
زمان مطالعه: ۶۰ دقیقه
در آموزشهای قبلی مجله فرادرس، درباره انتگرال و روشهای محاسبه آن بحث کردیم. در این آموزشها، مباحثی مانند انتگرال توابع مثلثاتی، انتگرالگیری جزء به جزء، انتگرال دوگانه و انتگرال سهگانه را معرفی کردیم. همچنین با تغییر متغیر و کاربرد آن در انتگرالگیری آشنا شدیم. گاهی میخواهیم ناحیه بین یک منحنی و محور مختصات را محاسبه کنیم، اما نمیتوانیم حاصل انتگرال مربوط به محاسبه مساحت منحنی را به راحتی و با محاسبه تحلیلی به دست آوریم. یکی از راههایی که در این مواقع وجود دارد، استفاده از روشهای عددی برای محاسبه انتگرال منحنی است. در این آموزش، یکی از این روشها، یعنی «قاعده سیمپسون» (Simpson's Rule) را معرفی میکنیم.
در قاعده سیمپسون، از سهمیها برای تقریب هر تکه از منحنی استفاده میکنیم. اثبات شده که این روش نسبت به بسیاری از روشهای مشابه برای محاسبه عددی انتگرال، کارآمدتر و دقیقتر است.
مثال عددی زیر، نحوه محاسبات در این روش را به خوبی بیان میکند.
فرض کنید میخواهیم مساحت زیر منحنی عمومی شکل زیر را حساب کنیم.
منحنی بالا را به چهار بخش مساوی تقسیم میکنیم (تعداد این بخشها باید عدد زوجی باشد).
در ادامه، سهمیهایی را پیدا میکنیم که بسیار شبیه به هر یک از چهار تکه منحنی باشند. اگر سه نقطه داشته باشیم، میتوانیم یک سهمی منحصر به فرد را از آنها عبور دهیم.
از دو تکه اول سمت چپ منحنی شروع میکنیم. نقاط میانی و انتهایی را به صورت زیر تعیین میکنیم.
معادلات بالا، یک دستگاه سه معادله و سه مجهولی را تشکیل میدهند و از آن میتوان ضرایب a، b و c را به دست آورد:
a=0.17021,b=0.85820,c=1.92808.
در نتیجه میتوان معادله سهمی گذرنده از سه نقطه را به صورت زیر نوشت (اعداد گرد شدهاند):
y=0.170x2+0.858x+1.93
منحنی سهمی، در شکل زیر نشان داده شده است:
همانطور که میبینیم، سهمی از سه نقطه میگذرد و بسیار نزدیک به منحنی اصلی است؛ بنابراین، تقریب مناسبی برای این تکه از منحنی است.
فرایند مشابهی را برای دو تکه دیگر انجام میدهیم و سهمی گذرنده از سه نقطه را به شکل زیر به دست میآوریم:
هرچه تعداد تکه های منحنی بیشتر باشد یا عرض زیر بازهها کمتر باشد، دقت تقریب بالاتر میرود. شکل زیر نشان میدهد که با کاهش اندازه زیر بازهها، سهمی مشابه منحنی اصلی شده است.
خطا در قاعده سیمپسون
وقتی مقدار عددی انتگرال را تقریب میزنیم، همیشه مقداری خطا وجود دارد. این خطا برابر است با:
E=∫abf(x)dx−App
که در آن، App مقدار تقریبی و E خطا است.
حال میخواهیم بدانیم محدوده خطای قاعده سیمپسون چقدر است. فرض کنید برای a≤x≤b داشته باشیم: f(4)(x)≤M. بنابراین، کران خطا به صورت زیر خواهد بود:
∣E∣≤180n4M(b−a)5
مثالها
در ادامه، مثالهایی را از کاربرد قاعده سیمپسون بیان میکنیم.
مثال ۱
انتگرال ∫23x+1dx را با استفاده از قاعده سیمپسون با n=4 محاسبه کنید.
حل: نمودار منحنی مطابق شکل زیر است:
اندازه هر زیر بازه به صورت زیر تعیین میشود:
Δx=nb−a=43−2=0.25
با توجه به عرض هر زیر بازه، نقاط مربوط به هریک از زیر بازهها به صورت زیر است:
1import numpy as np
2import matplotlib.pyplot as plt
3%matplotlib inline
برای نوشتن برنامه قاعده سیمپسون در پایتون، ابتدا تابع simps را تعریف میکنیم که پارامترهای ورودی آن f، a، b و N هستند و تقریب SN(f) را به عنوان خروجی به دست میدهد. مقدار N=50 را در نظر میگیریم. برنامه به صورت زیر است:
1def simps(f,a,b,N=50):2'''Approximate the integral of f(x) from a to b by Simpson's rule.34 Simpson's rule approximates the integral \int_a^b f(x) dx by the sum:5(dx/3) \sum_{k=1}^{N/2}(f(x_{2i-2}+4f(x_{2i-1})+f(x_{2i}))6 where x_i = a + i*dx and dx =(b - a)/N.78 Parameters
9----------10 f :function11 Vectorized function of a single variable
12 a , b : numbers
13 Interval of integration [a,b]14 N :(even) integer
15 Number of subintervals of [a,b]1617 Returns
18-------19 float
20 Approximation of the integral of f(x) from a to b using
21 Simpson's rule with N subintervals of equal length.2223 Examples
24--------25>>>simps(lambda x :3*x**2,0,1,10)261.027'''
28if N %2==1:29 raise ValueError("N must be an even integer.")30 dx =(b-a)/N
31 x = np.linspace(a,b,N+1)32 y =f(x)33 S = dx/3* np.sum(y[0:-1:2]+4*y[1::2]+ y[2::2])34return S
اکنون برنامه بالا را برای انتگرالی که مقدار آن را میدانیم، آزمایش میکنیم. برای مثال، انتگرال زیر را در نظر بگیرید:
∫013x2dx=1
برنامه و نتیجه اجرای آن برای این انتگرال به صورت زیر است:
1simps(lambda x :3*x**2,0,1,10)
11.0
برای انتگرال زیر نیز برنامه را اجرا میکنیم:
∫0π/2sin(x)dx=1
در نتیجه، داریم:
1simps(np.sin,0,np.pi/2,100)
11.00000000033823612<div class="faradars-courses faradars-courses-single">3<a href="https://faradars.org/courses/fvmth102-numerical-analysis?utm_source=blog.faradars&utm_medium=referral-post&utm_campaign=related-courses-inline-5&utm_term=s.hamidi&utm_content=mathematics" target="_blank">4<div class="card card-course">5<div class="card-image">6<img class="pop-img" src="https://faradars.org/wp-content/uploads/2024/04/17/fvmth102.svg" alt="آموزش محاسبات عددی با متلب MATLAB">7</div>8<div class="card-body">9<div class="card-title">10 فیلم آموزش محاسبات عددی با متلب MATLAB در فرادرس
11</div>12</div>13<div class="card-action ml-3">14<div class="fdb-btn">کلیک کنید</div>15</div>16</div>17</a>18</div>19
پیادهسازی در متلب
برنامه متلب قاعده سیمپسون نیز به صورت زیر است:
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2% Simpson Rule (Version 1.0)%3%%4% Programmed By: MatlabSite.com Team.%5% Copyright 2009%6%%7%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%8! Copyright.pdf
91011clc;12clear;13x=sym('x');1415disp('This program calculates integral of f(x) using Composite Simpson rule.');16f=input('Enter f(x) as a function of x: ');17disp(' ');1819a=input('Enter the start of integration range: ');20b=input('Enter the end of integration range: ');21disp(' ');2223xmin=min(a,b);24xmax=max(a,b);2526a=xmin;27b=xmax;2829n=input('Enter the number of subintervals (an even number): ');30disp(' ');31n=2*floor(n/2);32if(n<2)33 n=2;34end
3536h=(b-a)/n;37S=0;38for i=1:n+139 xx=a+(i-1)*h;40 ff=subs(f,xx);4142if i==1|| i==n+143 S=S+ff;44else45ifmod(i,2)==046 S=S+4*ff;47else48 S=S+2*ff;49 end
50 end
51end
5253S=S*h/3;5455disp(['Integral of 'char(f)' in the range ['mat2str(a,4)', 'mat2str(b,4)'] is:']);56disp(mat2str(S,10));57disp(' ');
در آموزشهای بعدی، روشهای دیگر محاسبه عددی انتگرال را معرفی خواهیم کرد.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
سید سراج حمیدی دانشآموخته مهندسی برق است و به ریاضیات و زبان و ادبیات فارسی علاقه دارد. او آموزشهای مهندسی برق، ریاضیات و ادبیات مجله فرادرس را مینویسد.
بسیار ساده و قابل فهم توضیح فرمودید ، ممنونم
سلام.
سپاس از همراهی و بازخورد محبتآمیزتان.
موفق باشید.
بسیار عالی بود آقای حمیدی ممنونم
بسیار عالی بود متشکرم
سلام مریم گرامی.
مایه خرسندی است که از این آموزش مجله فرادرس استفاده کردهاید.
شاد و پیروز باشید.