ریاضی، علوم پایه ۱۵۳۶۷ بازدید

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

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

برای مشاهده ویدیوها کلیک کنید.

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

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

مساحت ذوزنقه

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

مساحت ذوزنقه

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

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

در این‌جا، با ذوزنقه‌های قائم‌الزاویه سروکار داریم که اضلاع دو سمت آن موازی هستند و زاویه آن‌ها نسبت به مرجع، $$90$$ درجه است. قاعده آن‌ها نیز برابر با $$ h= \Delta 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 $$

قانون ذوزنقه‌ای برای $$n$$ ذوزنقه، برابر است با ($$A$$ مساحت بین منحنی و محور است):

$$ \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 ) } $$

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

$$ \large \displaystyle \Delta { x } = \frac { { { b } – { a } } }{ { n } } $$

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

$$ \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*} $$

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

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

$$ \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 . } $$

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

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

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

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

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

$$ \large \displaystyle { \large { { \left | { E } \right | } \le \frac { { { M } { { \left ( { b } – { a } \right ) } } ^ { { 3 } } } } { { { 1 2 } { { n } } ^ { { 2 } } } } } } $$

مثال‌ها

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

مثال ۱

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

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

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

منحنی

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

$$ \large \displaystyle \Delta { x } = { \frac { { { b } – { a }} } {{ { n } } } } = { \frac { { { 1 } – { 0 } } } { { { 5 } } } } = { 0.2 } $$

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

$$ \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*} $$

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

$$ \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=4$$، مقدار تقریبی انتگرال $$ \int_{{\,0}}^{{\,2}}{{{{\bf{e}}^{{x^2}}}\,dx}}$$ را محاسبه کنید.

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

$$ \large \Delta x = \frac { { 2 – 0 } } { 4 } = \frac { 1 } { 2 } $$

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

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

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

$$ \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 $$

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

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

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

مثال ۳

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

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

$$ \large \displaystyle { \large { \Delta { x } = \frac { { { b } – { a } } } { { n } } = \frac { { { 2 } – { 1 } } } { { 5 } } = { 0.2 } } } $$

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

$$ \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*} $$

مثال ۴

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

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

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

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

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

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

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

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

$$ \large \displaystyle { \large { \frac { { { 6 } { { \left ( { 2 } – { 1 } \right ) } } ^ { { 3 } } } } { { { 1 2 } { { n } } ^ { { 2 } } } } > { 0.0 0 0 2 } } } $$

یا

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

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

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

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

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

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

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

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

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

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

def trapz(f,a,b,N=50):
    '''Approximate the integral of f(x) from a to b by the trapezoid rule.

    The trapezoid rule approximates the integral \int_a^b f(x) dx by the sum:
    (dx/2) \sum_{k=1}^N (f(x_k) + f(x_{k-1}))
    where x_k = a + k*dx and dx = (b - a)/N.

    Parameters
    ----------
    f : function
        Vectorized function of a single variable
    a , b : numbers
        Interval of integration [a,b]
    N : integer
        Number of subintervals of [a,b]

    Returns
    -------
    float
        Approximation of the integral of f(x) from a to b using the
        trapezoid rule with N subintervals of equal length.

    Examples
    --------
    >>> trapz(np.sin,a=0,b=np.pi/2,N=1000)
    0.99999979438323316
    '''
    x = np.linspace(a,b,N+1)
    y = f(x)
    y_right = y[1:] # Right endpoints
    y_left = y[:-1] # Left endpoints
    dx = (b - a)/N
    T = (dx/2) * np.sum(y_right + y_left)
    return T

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

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

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

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

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

$$ \large \int _ 0 ^ 1 3 x ^ 2 \ d x = 1 $$

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

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

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

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

function I = trapezoidal_f1 ( f )
% for calculating integrals using trapezoidal rule when function is known

%asking for the range and desired accuracy
 R= input( ' Enter the limits of integrations [ x_min, x_max]   :\n');
 tol = input(' Error allowed in the final answer should be of an order : \n');
 a= R(1,1); b = R(1,2);
 
 %initial h and n
 n = 100;
 h = (b -a )/100;
 
 %for calculating maximum of h^2 *f''(x) in the given region
 for k = 0:100
        x( 1, k+1 ) = a +  k*h ;
        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) );
 end 
 [ y i ] =  max( y2);
 x_opt = x(1,i);
   
 % for calculating the desired value of h
 m=0;
 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
                m = m +1;
                h = h * 10^-m;
 end
 
 %calculating  n
 n = ceil( (b-a)/h );
 h = ( b-a )/ n;

 % forming matrix X
 for k = 1:(n+1)
    X(k,1) = a + (k-1)*h;
    X(k,2) = feval( f, X(k,1));
 end
 
% trapezoidal formula
I = h/2 * (2*sum( X(:,2))- X(1,2)- X( n,2));
 % displaying final result
 h 
 n
 disp(sprintf(' The area under this curve in the interval ( %10f , %10f )  is %10.6f .',a,b,I))

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

^^

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

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

دانلود ویدیو

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

دانلود ویدیو

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

دانلود ویدیو
بر اساس رای ۱۱ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

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

یک نظر ثبت شده در “قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)

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

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.