قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)

۸۵۸۱ بازدید
آخرین به‌روزرسانی: ۱۸ اردیبهشت ۱۴۰۲
زمان مطالعه: ۵۹ دقیقه
دانلود PDF مقاله
قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)

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

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

قاعده ذوزنقه ای

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

شکل زیر، این موضوع را نشان می‌دهد.

مساحت ذوزنقه

ذوزنقه شکل زیر را در نظر بگیرید.

اجزای ذوزنقه و فرمول مساحت ذوزنقه

مساحت هر ذوزنقه برابر است با:

A=h2(p+q) \large \displaystyle \text{A} = \frac { h } { { 2 } } { \left ( { p } + { q } \right ) }

در این‌جا، با ذوزنقه‌های قائم‌الزاویه سروکار داریم که اضلاع دو سمت آن موازی هستند و زاویه آن‌ها نسبت به مرجع، 9090 درجه است. قاعده آن‌ها نیز برابر با h=Δx h= \Delta x است.

یک ذوزنقه نوعی

بنابراین، مساحت زیر منحنی به صورت زیر محاسبه می‌شود:

A12(y0+y1)Δx+12(y1+y2)Δx+12(y2+y3)Δx+ \large \displaystyle \text {A} \approx \frac { 1 } { { 2 } } { \left ( { y } _ { { 0 } } + { y } _ { { 1 } } \right ) } \Delta { x } + \displaystyle \frac { 1 } { { 2 } } { \left ( { y } _ { { 1 } } + { y } _ { { 2 } } \right ) } \Delta { x } + \displaystyle \frac { 1 } { { 2 } } { \left ( { y } _ { { 2 } } + { y } _ { { 3 } } \right ) } \Delta { x } + \ldots

قانون ذوزنقه‌ای برای nn ذوزنقه، برابر است با (AA مساحت بین منحنی و محور است):

AΔx(y02+y1+y2+y3++yn2) \large \displaystyle \text{A} \approx \displaystyle \Delta { x } { \left ( \frac { { { y } _ { { 0 } } } } { { 2 } } + { y } _ { { 1 } } + { y } _ { { 2 } } + { y } _ { { 3 } }+ \right . } \displaystyle { \left . \ldots + \frac { { { y } _ { { n } } } } { { 2 } } \right ) }

برای پیدا کردن Δx \Delta x مربوط به مساحت زیر منحنی از x=ax=a تا x=bx=b، از رابطه زیر استفاده می‌کنیم:

Δx=ban \large \displaystyle \Delta { x } = \frac { { { b } - { a } } }{ { n } }

همچنین باید نقاط زیر را محاسبه کنیم:‌

y0=f(a)y1=f(a+Δx)y2=f(a+2Δx)yn=f(b) \large \begin {align*} \displaystyle { y } _ { { 0 } } & = f { { \left ( { a } \right ) } } \\ \displaystyle { y } _ { { 1 } } & = f { { \left ( { a } + \Delta { x } \right ) } } \\ \displaystyle { y } _ { { 2 } } & = f { { \left ( { a } +{ 2 } \Delta { x } \right ) } } \\ \displaystyle & \ldots \\ \displaystyle { y } _ { { n } } & = f { { \left ( { b } \right ) } } \end {align*}

اگر تعداد ذوزنقه‌های بیشتری را در نظر بگیریم، تقریب بهتری خواهیم داشت. هرچه تعداد ذوزنقه‌ها بیشتر باشد، اندازه Δx\Delta x به صفر میل می‌کند؛ یعنی Δx0 \Delta x \to 0 .

همچنین، اگر منحنی بالای محور xx بین x=ax= a و x=bx= b باشد، می‌توان نوشت:

A=abf(x)dxΔx(y02+y1++yn2) \large \displaystyle \text{A} = { \int _ { { a } } ^ { { b } } } f { { \left ( { x } \right ) } } { \left . { d } { x } \right . } \displaystyle \approx \displaystyle \Delta { x } { \left ( \frac { { { y } _ { { 0 } } } } { { 2 } } + { y } _ { { 1 } } + { \left . \ldots + \frac { { { y } _ { { n } } } } { { 2 } } \right ) } \right . }

خطا در قاعده ذوزنقه‌ای

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

E=abf(x)dxApp \large \displaystyle { \large { { E } = { \int _ { { a } } ^ {{ b } } } { f { { \left ( { x } \right ) } } } { d } { x } - { A } { p } { p } } }

که در آن،  App \displaystyle{\large{{A}{p}{p}}} مقدار تقریبی و EE خطا است.

حال می‌خواهیم بدانیم محدوده خطای قاعده ذوزنقه‌ای چقدر است. فرض کنید برای axb \displaystyle { \large { { a } \le { x } \le { b } } } داشته باشیم:  f(x)M \displaystyle {  { { \left | { f ^ {\prime \prime } } { \left ( { x } \right ) } \right | } \le { M } } } . بنابراین، کران خطا به صورت زیر خواهد بود:

EM(ba)312n2 \large \displaystyle { \large { { \left | { E } \right | } \le \frac { { { M } { { \left ( { b } - { a } \right ) } } ^ { { 3 } } } } { { { 1 2 } { { n } } ^ { { 2 } } } } } }

مثال‌ها

در ادامه، مثال‌هایی را از کاربرد قاعده ذوزنقه‌ای بیان می‌کنیم.

مثال ۱

با استفاده از قاعده ذوزنقه‌ای انتگرال زیر را برای n=5 n = 5 حساب کنید:

01x2+1 dx \large \displaystyle { \int _ { { 0 } } ^ { { 1 } } } \sqrt { { { x } ^ { 2 } +{ 1 } } } \ { \left . { d } { x } \right . }

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

منحنی

از آن‌جایی که a=0 a=0 و b=1b = 1 است، عرض هر ذوزنقه به صورت زیر محاسبه می‌شود:

Δx=ban=105=0.2 \large \displaystyle \Delta { x } = { \frac { { { b } - { a }} } {{ { n } } } } = { \frac { { { 1 } - { 0 } } } { { { 5 } } } } = { 0.2 }

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

y0=f(a)=f(0)=02+1=1y1=f(a+Δx)=f(0.2)=0.22+1=1.0198039y2=f(a+2Δx)=f(0.4)=0.42+1=1.0770330y3=f(a+3Δx)=f(0.6)=0.62+1=1.1661904y4=f(a+4Δx)=f(0.8)=0.82+1=1.2806248y5=f(a+5Δx)=f(1.0)=12+1=1.4142136 \large \begin{align*} \displaystyle { y } _ { { 0 } } &= f { { \left ( { a } \right ) } }= \displaystyle f { { \left ( { 0 } \right ) } } = \sqrt { { { 0 } ^ { 2 } + { 1 } } } = { 1 } \\ \displaystyle { y } _ { { 1 } } &= f { { \left ( { a } + \Delta { x } \right ) } } = \displaystyle f { { \left ( { 0.2 } \right ) } } = \sqrt { { { 0.2 } ^ { 2 } + { 1 } } } = { 1.0198039 } \\ \displaystyle { y } _ { { 2 } } &= f { { \left ( { a } + { 2 } \Delta { x } \right ) } } = \displaystyle f { { \left ( { 0.4 } \right ) } } = \sqrt { { { 0.4 } ^ { 2 } + { 1 } } } = { 1.0770330 } \\ \displaystyle { y } _ { { 3 } } &= f { {\left ( { a } + { 3 } \Delta { x } \right ) } } = \displaystyle f { { \left ( { 0.6 } \right ) } } = \sqrt { { { 0.6 } ^ { 2 } + { 1 } } } = { 1.1661904 } \\ \displaystyle { y } _ { { 4 } } &= f { { \left ( { a } + { 4 } \Delta { x } \right ) } } = \displaystyle f { { \left ( { 0.8 } \right ) } } = \sqrt { { { 0.8 } ^ { 2 } + { 1 } } } = { 1.2806248 } \\ \displaystyle { y } _ { { 5 } } &= f { { \left ( { a } +{ 5 } \Delta { x } \right ) } } \displaystyle =f { { \left ( { 1.0 } \right ) } } = \sqrt { { { 1 } ^ { 2 } + { 1 } } } = { 1.4142136 } \end{align*}

در نهایت، حاصل انتگرال برابر است با:

I0.2(12×1+1.0198039+1.0770330+1.1661904+1.2806248+12×1.4142136)=1.150 \large \displaystyle \text{I} \approx \displaystyle {0.2} { \left ( \frac { 1 } { { 2 } } \times { 1 } + { 1.0198039 } \right . } \displaystyle + { 1.0770330 } + { 1.1661904 }\\ \large \displaystyle { \left . + { 1.2806248 } + \frac { 1 } { { 2 } } \times { 1.4142136 } \right ) } \displaystyle = { 1.150 }

مثال ۲

با در نظر گرفتن n=4n=4، مقدار تقریبی انتگرال  02ex2dx \int_{{\,0}}^{{\,2}}{{{{\bf{e}}^{{x^2}}}\,dx}} را محاسبه کنید.

حل: ابتدا طول هر زیربازه را با توجه به n=4n=4 محاسبه می‌کنیم:

Δx=204=12 \large \Delta x = \frac { { 2 - 0 } } { 4 } = \frac { 1 } { 2 }

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

[0,0.5],[0.5,1],[1,1.5],[1.5,2] \large \left [ { 0 , \, \, 0.5 } \right ] , \, \, \left [ { 0.5 , \, \, 1 } \right ] , \, \, \left [ { 1 , \, \, 1.5 } \right ] , \, \, \left [ { 1.5 , \, \, 2 } \right]

با استفاده از فرمول قاعده ذوزنقه‌ای، مقدار انتگرال به صورت زیر محاسبه می‌شود:

02ex2dx1/2  2(e(0)2+2e(0.5)2+2e(1)2+2e(1.5)2+e(2)2)=20.64455905 \large \int _ { { \, 0 } } ^ { { \, 2 } } { { { { \bf { e } } ^ { { x ^ 2 } } } \, d x } } \approx \frac { { { 1 } / { 2 } \; } } { 2 } \left ( { { { \bf { e } } ^ { { { \left ( 0 \right ) } ^ 2 } } } + 2 { { \bf { e } } ^ { { { \left ( { 0 . 5 } \right ) } ^ 2 } } } + 2 { { \bf { e } } ^ { { { \left ( 1 \right ) } ^ 2 } } } + 2 { { \bf { e } } ^ { { { \left ( { 1 . 5 } \right ) } ^ 2 } } } + { { \bf { e } } ^ { { { \left ( 2 \right ) } ^ 2 } } } } \right ) = 20.64455905

مقدار واقعی انتگرال برابر است با:

02ex2dx=16.45262776 \large \int _ { { \, 0 } } ^ { { \, 2 } }{ { { { \bf { e } }^ { { x ^ 2 } } } \, d x } } = 16.45262776

بنابراین، مقدار خطای قاعده ذوزنقه‌ای 4.191931294.19193129 است.

مثال ۳

با استفاده از قاعده ذوزنقه‌ای، مقدار 121x2dx \displaystyle { \large { { \int _ { { 1 } } ^ { { 2 } }} \frac { { 1 } } { { { x } } ^ { { 2 } } } { d } { x } } } را برای n=5n=5 محاسبه کنید.

حل: در این مثال، a=1 a=1 و b=2b=2 است. همچنین، از آن‌جایی که n=5n=5 است، عرض هر بازه برابر است با:‌

Δx=ban=215=0.2 \large \displaystyle { \large { \Delta { x } = \frac { { { b } - { a } } } { { n } } = \frac { { { 2 } - { 1 } } } { { 5 } } = { 0.2 } } }

بنابراین، برای محاسبه انتگرال، داریم:

121x2(dx)Tn=0.22(f(1)+2f(1.2)+2f(1.4)+2f(1.6)+2f(1.8)+f(2))=0.1(112+2(1.2)2+2(1.4)2+2(1.6)2+2(1.8)2+122)0.505783 \large \begin {align*} { { \int _ { { 1 } } ^ { {2 } } } \frac { { 1 } } { { { x } } ^ { { 2 } } } { \left ( { d } { x } \right ) } \approx { T } _ { { n } } = \frac { { 0.2 } } { { 2 } } { \left ( { f { { \left ( { 1 } \right ) } } } + { 2 } { f { { \left ( { 1.2 } \right ) } } } + { 2 } { f { { \left ( { 1.4 } \right ) } }} + { 2 } { f { { \left ( { 1.6 } \right ) } } } + { 2 } { f { { \left ( { 1.8 } \right ) } } } + { f { { \left ( { 2 } \right ) } } } \right ) } } \\ = { 0.1 } { \left ( \frac { { 1 } } { { { 1 } } ^ { {2 } }} + \frac { { 2 } } { { { \left ( { 1.2 } \right ) } } ^ { { 2 } } } + \frac { { 2 } } { { { \left ( { 1.4 } \right ) } } ^ { { 2 } } } + \frac { { 2 } } { { { \left ( { 1.6 } \right ) } } ^ { { 2 }} } + \frac { { 2 } } { { { \left ( { 1.8 } \right ) } } ^ { { 2 } } } + \frac { { 1 } } { { { 2 } } ^ { { 2 } } } \right ) } \approx {0.505783} \end{align*}

مثال ۴

مقدار nn را طوری بیابید که دقت تقریب ذوزنقه‌ای برای انتگرال 121x2dx \displaystyle { \large { { \int _ { { 1 } } ^ { { 2 } } } \frac { { 1 } } { { { x } } ^ { { 2 } } } { d } { x } } } برابر با 0.0002 0.0002 باشد.

حل: در این مثال، مقادیر زیر را داریم:

 a=1,b=2,f(x)=1x2 \large \displaystyle { \large { { a } = { 1 } } } , \, \, \, \displaystyle { \large { { b } = { 2 } } } , \, \, \, \displaystyle { \large { { f { { \left ( { x } \right ) } } } = \frac { { 1 } } { { { x } } ^ { { 2 } } } } }

مشتق اول و دوم تابع را برای قرار دادن در فرمول خطا به دست می‌آوریم:

f(x)=2x3,f (x)=6x4 \large \displaystyle { \large { { f { ^ \prime } } { \left ( { x } \right ) } = - \frac { { 2 } } { { { x } } ^ { { 3 } } } } }, \, \, \, \, \displaystyle { \large { { f^ {  \prime \prime } } { \left ( { x } \right ) } = \frac { { 6 } } { { { x } } ^ { { 4 } } } } }

بنابراین، برای 1x2 \displaystyle { \large { { 1 } \le { x } \le { 2 } } } ، داریم:

f(x)6 \large \displaystyle { \large { { \left | { f ^{ \prime \prime } } { \left ( { x } \right ) } \right | } \le { 6 } } }

در نتیجه، می‌توان نوشت:

6(21)312n2>0.0002 \large \displaystyle { \large { \frac { { { 6 } { { \left ( { 2 } - { 1 } \right ) } } ^ { { 3 } } } } { { { 1 2 } { { n } } ^ { { 2 } } } } > { 0.0 0 0 2 } } }

یا

n2>10.0004 \large \displaystyle { \large { { { n } } ^ { { 2 } } > \frac { { 1 } } { { { 0.0004 } } } } }

در نهایت، مقدار nn باید در نامساوی زیر صدق کند:

n>10.0004=50 \large \displaystyle { \large { { n } > \frac { { 1 } } { \sqrt { { { 0.0004 } } } } = { 5 0 } } }

بنابراین، مقدار n=51 n= 51 را انتخاب می‌کنیم.

پیاده‌سازی نر‌م‌افزاری قاعده ذوزنقه‌ای

در این بخش، شیوه پیاده‌سازی قاعده ذوزنقه‌ای را در پایتون و متلب بیان می‌کنیم.

پیاده‌سازی در پایتون

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

1import numpy as np
2import matplotlib.pyplot as plt
3%matplotlib inline

برای نوشتن برنامه قاعده ذوزنقه‌ای در پایتون، ابتدا تابع trapz را تعریف می‌کنیم که پارامترهای ورودی آن ff، aa، bb و NN هستند و تقریب TN(f)T_N(f) را به عنوان خروجی به دست می‌دهد. مقدار N=50N=50 را در نظر می‌گیریم. برنامه به صورت زیر است:

1def trapz(f,a,b,N=50):
2    '''Approximate the integral of f(x) from a to b by the trapezoid rule.
3
4    The trapezoid rule approximates the integral \int_a^b f(x) dx by the sum:
5    (dx/2) \sum_{k=1}^N (f(x_k) + f(x_{k-1}))
6    where x_k = a + k*dx and dx = (b - a)/N.
7
8    Parameters
9    ----------
10    f : function
11        Vectorized function of a single variable
12    a , b : numbers
13        Interval of integration [a,b]
14    N : integer
15        Number of subintervals of [a,b]
16
17    Returns
18    -------
19    float
20        Approximation of the integral of f(x) from a to b using the
21        trapezoid rule with N subintervals of equal length.
22
23    Examples
24    --------
25    >>> trapz(np.sin,a=0,b=np.pi/2,N=1000)
26    0.99999979438323316
27    '''
28    x = np.linspace(a,b,N+1)
29    y = f(x)
30    y_right = y[1:] # Right endpoints
31    y_left = y[:-1] # Left endpoints
32    dx = (b - a)/N
33    T = (dx/2) * np.sum(y_right + y_left)
34    return T

اکنون برنامه بالا را برای انتگرالی که مقدار آن را می‌دانیم، آزمایش می‌کنیم. برای مثال، انتگرال زیر را در نظر بگیرید:

0π/2sinx dx=1 \large \int _ 0 ^ { \pi / 2 } \sin x \ d x = 1

برنامه و نتیجه اجرای آن برای این انتگرال به صورت زیر است:

1trapz(np.sin,0,np.pi/2,1000)
10.99999979438323316

برای انتگرال زیر نیز برنامه را اجرا می‌کنیم:‌

013x2 dx=1 \large \int _ 0 ^ 1 3 x ^ 2 \ d x = 1

در نتیجه، داریم:

1trapz(lambda x : 3*x**2,0,1,10000)
11.0000000050000002

پیاده‌سازی در متلب

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

1function I = trapezoidal_f1 ( f )
2% for calculating integrals using trapezoidal rule when function is known
3
4%asking for the range and desired accuracy
5 R= input( ' Enter the limits of integrations [ x_min, x_max]   :\n');
6 tol = input(' Error allowed in the final answer should be of an order : \n');
7 a= R(1,1); b = R(1,2);
8 
9 %initial h and n
10 n = 100;
11 h = (b -a )/100;
12 
13 %for calculating maximum of h^2 *f''(x) in the given region
14 for k = 0:100
15        x( 1, k+1 ) = a +  k*h ;
16        y2 ( 1, k+1) = feval ( f, x(1,k+1) + 2*h ) - 2*feval( f, x(1,k+1) + h ) + feval( f, x(k+1) );
17 end 
18 [ y i ] =  max( y2);
19 x_opt = x(1,i);
20   
21 % for calculating the desired value of h
22 m=0;
23 while abs((feval ( f, x_opt + 2*h ) - 2*feval(f,  x_opt+ h) + feval(f, x_opt)) * ( b-a)/12) > tol % Global error for trapezoidal rule
24                m = m +1;
25                h = h * 10^-m;
26 end
27 
28 %calculating  n
29 n = ceil( (b-a)/h );
30 h = ( b-a )/ n;
31
32 % forming matrix X
33 for k = 1:(n+1)
34    X(k,1) = a + (k-1)*h;
35    X(k,2) = feval( f, X(k,1));
36 end
37 
38% trapezoidal formula
39I = h/2 * (2*sum( X(:,2))- X(1,2)- X( n,2));
40 % displaying final result
41 h 
42 n
43 disp(sprintf(' The area under this curve in the interval ( %10f , %10f )  is %10.6f .',a,b,I))

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

فیلم‌ های آموزش قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)

فیلم آموزشی قاعده ذوزنقه‌ای

دانلود ویدیو

فیلم آموزشی حل مثال از قاعده ذوزنقه‌ای

دانلود ویدیو

فیلم آموزشی پیاده‌سازی قاعده ذوزنقه‌ای در متلب

دانلود ویدیو
بر اساس رای ۱۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Pauls Online NotesInteractive MathematicseMathHelpMathematical PythonCode with C
۳ دیدگاه برای «قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)»

در شکل دوم، پارامتر h، به صورت سهوی اشتباه داده شده است. h اندازه ارتفاع ذوزنقه است ولی به صورت اندازه ضلع مایل نشان داده شده است. لطفا اصلاح بفرمایید.

سلام؛

تصویر اصلاح شد. خیلی ممنون از دقت شما.

از همراهیتان با مجله فرادرس سپاسگزاریم.

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

نظر شما چیست؟

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