درون یابی خطی — به زبان ساده



تعداد بازدید ها:
6

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

«تابع درون‌یابی» (Interpolation Function) تابعی است که دقیقاً از یک مجموعه نقطه داده عبور می‌کند. توابع درون‌یاب داده‌های جدولی به فرم زیر را درون‌یابی می‌کنند.

$$ begin array
hline x & sin ( x ) \
hline 0 . 0 & 0 . 0 0 0 0 0 0 \
hline 0 . 5 & 0 . 4 7 9 4 2 6 \
hline 1 . 0 & 0 . 8 4 1 4 7 1 \
hline 1 . 5 & 0 . 9 9 7 4 9 5 \
hline 2 . 0 & 0 . 9 0 9 2 9 7 \
hline 2 . 5 & 0 . 5 9 8 4 7 2 \
hline
end array $$

در جدول داده‌ها، تابع تنها در تعداد محدودی نقطه یا مجموعه گسسته‌ای از مقادیر متغیر مستقل مشخص شده است. می‌توان از درون‌یابی برای یافتن مقادیر تابعی در سایر مقادیر متغیرهای مستقل، مثلاً $$ sin (0.63253)$$ استفاده کرد. در روش‌های عددی نیز، مشابه داده‌های جدولی، مقادیر تابع تنها در تعداد گسسته‌ای از نقاط مشخص است. با استفاده از درون‌یابی می‌توانیم تابع را در هر نقطه یا از فضا توصیف کنیم یا حداقل تقریب بزنیم. از درون‌یابی برای مواردی چون درون‌یابی مقادیر با محاسبات، انتگرال‌گیری عددی، مشتق‌گیری عددی و روش اجزای محدود استفاده می‌کنیم.

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

درون یابی خطی

به طور ساده، می‌توان گفت که «درون یابی خطی» (Linear Interpolation) عبور دادن یک خط راست بین دو نقطه داده است.

درون یابی خطی

در شکل بالا، $$ f ( x) $$ تابع دقیق یا اصلی است که مقادیر آن تنها در تعدادی نقطه گسسته معلوم است. $$ g ( x ) $$ نیز تقریب درون‌یابی شده برای $$ f ( x )$$ است. $$ x _ 0 $$ و $$ x _ 1 $$ نقطه داده‌های هستند که به آن‌ها نقاط یا گره‌های درون‌یابی نیز می‌گویند.

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

$$ begin array l l
x _ o & f left ( x _ o right ) \
x & g ( x ) \
x _ 1 & f left ( x _ 1 right )
end array $$

اگر $$ g ( x ) $$ یک تابع خطی باشد، داریم:

$$ g ( x ) = A x + B ;;;;; ( 1 ) $$

برای عبور دادن خط از نقاط $$ ( x _ 0 , f ( x _ 0 )) $$ و $$ ( x _ 1 , f (x _ 1 )) $$، باید داشته باشیم:

$$ begin array l
g left ( x _ 0 right ) = f left ( x _ 0 right ) quad Rightarrow quad A x _ 0 + B = f left ( x _ 0 right ) ;;;;; ( 2) \
g left ( x _ 1 right ) = f left ( x _ 1 right ) quad Rightarrow quad A x _ 1 + B = f left ( x _ 1 right ) ;;;;; ( 3 ) end array $$

همان‌طور که می‌بینیم، یک دستگاه معادلات خطی با دو معادله و دو مجهول داریم. حال باید $$ A $$ و $$ B $$ را محاسبه کنیم.

با استفاده از معادله (۲)، می‌توان نوشت:

$$ B = f ( x _ 0 ) – A x _ 0 $$

با جایگذاری این عبارت در (۳)، خواهیم داشت:

$$ A x _ 1 + f ( x _ 0 ) – A x _ 0 = f ( x _ 1 ) $$

$$ begin aligned
& A = frac f left ( x _ 1 right ) – f left ( x _ 0 right ) x _ 1 – x _ \
& B = frac f left ( x _ 0 right ) x _ 1 – f left ( x _ 1 right ) x _ 0 x _ 1 – x _ 0
end aligned $$

حال که $$ A $$ و $$ B $$ را به دست آوردیم، آن‌ها را در (۱) قرار می‌دهیم و خواهیم داشت:

$$ boxed g ( x ) = f left ( x _ 0 right ) frac left ( x _ 1 – x right ) left ( x _ 1 -x _ 0 right ) + f left ( x _ 1 right ) frac left ( x – x _ 0 right ) left ( x _ 1 – x _ 0 right ) $$

این همان فرمول درون یابی خطی است.

مثال ۱

مقادیر $$ x _ 0 $$ و $$ x _ 1 $$ و $$ f ( x _ 0 ) $$ و $$ f ( x _ 1 )$$ به صورت زیر داده شده‌اند. با استفاده از درون یابی خطی مقدار $$ g(x) = 0. 632 $$ را به دست آورید.

$$ begin array
hline x & f ( x ) = sin x \
hline x _ 0 = 0 .5 & f left ( x _ 0 right ) = 0 . 4 7 9 4 2 5 5 4 \
hline 0 . 6 3 2 & g ( 0 . 6 3 2 ) = ? \
hline x _ 1 = 1 . 0 & f left ( x _ 1 right ) = 0 . 8 4 1 4 7 0 9 9 \
hline end array $$

با استفاده از فرمول درون یابی خطی که به دست آوردیم، داریم:

$$ g ( 0 . 6 3 2 ) = 0 . 4 7 9 4 2 5 frac ( 1 . 0 – 0 . 6 3 2 ) ( 1. 0- 0 . 5 ) + 0 . 8 4 1 47 0 9 9 frac ( 0 .6 3 2 – 0 . 5 ) ( 1 . 0- 0 . 5 ) $$

بنابراین، $$ g ( 0. 6 3 2 ) = 0.57500 $$ است.

خطای درون یابی خطی

خطای درون یابی خطی به صورت زیر تعریف می‌شود:

$$ e ( x ) equiv f ( x ) –  g ( x ) $$

که اختلاف بین تابع دقیق $$ f ( x ) $$ و تابع درون‌یاب یا تقریب‌زننده $$ g ( x ) $$ است. در نقاط درون‌یابی $$ x _ 0 $$ و $$ x _ 1 $$، خطا، به ترتیب، $$ e ( x _ 0 ) = 0 $$ و $$ e ( x _ 1 ) = 0 $$ است. دلیل صفر بودن خطا در این نقاط آن است که طبق تعریف، گفتیم $$ g ( x _ 0 ) = f ( x _ 0 ) $$ و $$ g ( x _ 1 ) = f ( x _ 1 ) $$ است.

محاسبه $$ large e ( x ) $$

خطای $$ e ( x ) $$ را می‌توان به سادگی و طی گام‌های زیر به دست آورد.

گام ۱: بسط سری تیلور $$ f ( x ) $$ را حول $$ x _ 0 $$ می‌نویسیم:

$$ f ( x ) = f left ( x _ 0 right ) + left.left ( x – x _ 0 right ) frac d f d x right | _ x = x _ 0 + left. frac left ( x – x _ 0 right ) ^ 2 2 ! frac d ^ 2 f d x ^ 2 right | _ x = xi quad text , x _ 0 leq xi leq x ;;;;; ( 4 ) $$

جمله سوم، باقیمانده واقعی است و همه جملات دیگر در سری را نشان می‌دهد، زیرا در $$ x = xi $$ تعیین می‌شود.

گام ۲: عبارت $$ left.frac d f d x right | _ x = x _ 0 $$ را برحسب $$ f ( x _ 0 ) $$ و $$ f ( x _ 1 ) $$ می‌نویسیم. با قرار دادن $$ x = x _ 1 $$ در (۴) به این هدف می‌رسیم:

$$ f left ( x _ 1 right ) = f left ( x _ 0 right ) + left . left ( x _ 1 – x _ 0 right ) frac d f d x right | _ x = x _ 0 + left . frac left ( x_ 1 – x _ 0 right ) ^ 2 2 ! frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; (5)$$

بنابراین، داریم:

$$ left . frac d f d x right | _ x = x _ 0 = frac f left ( x _ 1 right ) left ( x _ 1 -x _ 0 right ) – frac f left ( x _ 0 right ) left ( x _ 1 -x _ 0 right ) – left . frac left ( x _ 1 -x _ 0 right ) ^ 2 2 ! cdot frac 1 left ( x _ 1 – x _ 0 right ) frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; ( 6 ) $$

و در نتیجه:

$$ left . frac d f d x right | _ x = x _ 0 = frac f left ( x _ 1 right ) left ( x _ 1 – x _ 0 right ) – frac f left ( x _ 0 right ) left ( x _ 1 – x _ 0 right ) – left . frac left ( x _ 1 – x _ 0 right ) d ^ 2 f 2 frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; ( 7 ) $$

فرمول اخیر یک تقریب گسسته برای مشتق اول است.

گام ۳: معادله (۷) را در فرم (۴) سری تیلور $$ f ( x ) $$ قرار می‌دهیم. در نتیجه، توصیفی برای $$ f ( x ) $$ برحسب مقادیر گسسته $$ f ( x _ 0 )$$ و $$ f ( x _ 1 ) $$ به دست می‌آوریم:

$$ f ( x ) = f left ( x _ 0 right ) + left ( x – x _ 0 right ) left[ frac f left ( x _ 1 right ) left ( x _ 1 -x _ 0 right ) – frac f left ( x _ 0 right ) left ( x _ 1 – x _ 0 right ) -left. frac left ( x _ 1 -x _ 0 right ) 2 frac d ^ 2 f d x ^ 2 right | _ x = xi right ] + left. frac left ( x – x _ 0 right ) ^ 2 2 frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; ( 8 ) $$

در نتیجه:

$$ f ( x ) = f left ( x _ 0 right ) + frac left ( x -x _ 0 right ) left ( x_ 1 – x _ 0 right ) f left ( x _ 1 right ) – frac left ( x – x _ 0 right ) left ( x _ 1 – x _ 0 right ) f left ( x _ 0 right ) + left . left [ frac left ( x – x _ 0 right ) left ( – x _ 1 + x _ 0 right ) 2 + frac left ( x – x _ 0 right ) ^ 2 2 right ] frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; (9)$$

بنابراین:

$$ f ( x ) = left ( x _ 1 – x _ 0 – x + x _ 0 right ) frac f left ( x _ 0 right ) left ( x _ 1 – x _ 0 right ) + left ( x – x _ 0 right ) frac f left ( x _ 1 right ) left ( x _ 1 – x _ 0 right ) + left . left ( – x _ 1 + x _ 0 + x – x _ 0 right ) frac left ( x – x _ 0 right ) 2 frac d ^ 2 f d x ^ 2 right | _ x = xi   ;;;;; ( 10 ) $$

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

$$ f ( x ) = f left ( x _ 0 right ) left [ frac x _ 1 – x x _ 1 – x _ 0 right ] + f left ( x _ 1 right ) left [ frac x – x _ 0 x _ 1 – x _ 0 right ] + left . frac left ( x – x _ 0 right ) left ( x – x _ 1 right ) 2 frac d ^ 2 f d x ^ 2 right | _ x = xi ;;;;; ( 11 ) $$

بخش اول رابطه (۱۱) همان فرمول درون یابی خطی است و بخش دوم نیز در واقع خطا را نشان می‌دهد. بنابراین:

$$ begin aligned
e ( x ) & equiv f ( x ) – g ( x ) \
e ( x ) & = f left ( x _ 0 right ) left [ frac x _ 1 – x x _ 1 – x _ 0 right ] + f left ( x _ 1 right ) left [ frac x – x _ 0 x _ 1 -x _ 0 right ] + left . frac left ( x – x _ 0 right ) left ( x -x _ 1 right ) 2 frac d ^ 2 f d x ^ 2 right | _ x = xi
– f left ( x _ 0 right ) left [ frac x _ 1 – x x_ 1 – x _ 0 right ] – f left ( x _ 1 right ) left [ frac x – x _ 0 x _ 1 – x _ 0 right ]
end aligned $$

در نتیجه:

$$ e ( x ) = left . frac left ( x – x _ 0 right ) left ( x – x_ 1 right ) 2 frac d ^ 2 f d x ^ 2 right | _ x = xi quad x _ 0 leq xi leq x _ 1 $$

اگر فرض کنیم بازه $$ [ x _ 0 , x _ 1 ] $$ کوچک است، آنگاه مشتق دوم در بازه تغییری نمی‌کند.

$$ begin aligned
& left . left . left . left . frac d ^ 2 f d x ^ 2 right | _ x = xi cong frac d ^ 2 f d x ^ 2 right | _ x = x _ 0 cong frac d ^ 2 f d x ^ 2 right | _ x = x _ 1 cong frac d ^ 2 f d x ^ 2 right | _ x = x _ m
text , quad x _ m equiv frac x _ 0 + x _ 1 2
end aligned $$

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

$$ left . e ( x ) cong frac 1 2 left ( x -x _ 0 right ) left ( x – x _ 1 right ) frac d ^ 2 f d x ^ 2 right | _ x = x _ m $$

یک مسئله دیگر این است که معمولاً مشتق دوم را در نقطه میانی $$ x _ m $$ نمی‌دانیم. البته با استفاده از فرمول تفاضل‌گیری محدود می‌توانیم این مشتق را با داشتن مقادیر تابعی در نقاط درون‌یابی تقریب بزنیم.

حداکثر خطا در روش درون یابی خطی در نقطه میانی رخ می‌دهد ( که در آن، $$ ( x – x _ 0 ) ( x – x _ 1 ) $$ بزرگ‌ترین است):

$$ left . max | e ( x ) | _ x _ 0 < x _ 1 cong frac 1 2 left ( x _ m – x _ 0 right ) left ( x _ m – x _ 1 right ) frac d ^ 2 f d x ^ 2 right | _ x = x _ m $$

با تعریف $$ h equiv x _ 1 – x _ 0 $$ و $$ frac h 2 = x _ m – x _ 0 $$ و $$ frac h 2 = x _ 1 – x _ m $$، خواهیم داشت:

$$ max | e ( x ) | _ x _ 0 < x < x _ 1 = left . frac h ^ 2 8 frac d ^ 2 f d x^ 2 right | _ x _ m $$

در عبارت خطای درون یابی خطی یک چندجمله‌ای و یک مشتق وجود دارد. حداکثر خطا تقریباً در نقطه میانی بین $$ x _ 0 $$ و $$ x _ 1 $$ رخ می‌دهد. خطا با افرایش فاصله $$ h$$ افزایش می‌یابد. همچنین، وقتی $$ f ^ (2) ( x ) $$ زیاد شود، خطا نیز بیشتر می‌شود.

مثال ۲

خطای درون یابی خطی مثال ۱ را محاسبه کنید.

حل: همان‌طور که دیدم:

$$ g ( 0.632 ) = 0.57500 $$

خطا به صورت زیر تقریب زده می‌شود:

$$ left . e ( x ) cong frac 1 2 left ( x -x _ 0 right ) left ( x – x _ 1 right ) frac d ^ 2 f d x ^ 2 right | _ x = x _ m $$

از آنجا که $$ x = 0.750 $$ نقطه میانی در بازه $$ [ 0.5 , 1.0 ] $$ است، داریم:

$$ begin aligned
& left . e ( 0 . 6 3 2 ) cong frac 1 2 ( 0 . 6 3 2- 0. 5 ) (0 . 6 3 2 – 1 . 0 ) frac d ^ 2 f d x ^ 2 right | _ x = 0 . 7 5 0 \
& e ( 0 . 6 3 2 ) cong – left . 0 . 0 2 4 2 8 8 frac d ^ 2 f d x^ 2 right | _ x = 0 . 7 5
end aligned $$

مقدار $$ left. frac d ^ 2 f d x^ 2 right | _ x = 0 . 7 5 $$ را با استفاده از روش تحلیلی محاسبه می‌کنیم:

$$ left. frac d ^ 2 f d x^ 2 right | _ x = 0 . 7 5 = – sin ( 0.750 ) = – 0.68164 $$

اکنون با جایگذاری مقدار $$ left. frac d ^ 2 f d x^ 2 right | _ x = 0 . 7 5 $$، می‌توانیم خطا را تخمین بزنیم:

$$ e( 0 . 6 3 2) cong ( – 0 . 0 2 42 88 ) ( – 0. 68 1 6 4 ) = 0 . 0 1 6 5 5 5 $$

حال برای مقایسه، خطای واقعی (تفاضل جواب واقعی و جواب جواب تخمینی) را محاسبه می‌کنیم:

$$ E ( x ) = sin ( x ) – g ( x ) $$

$$ E ( 0.632) = sin ( 0 .632) – 0.57500 = 0.01576 $$

می‌بینیم که خطای تخمینی $$ e ( x ) $$ تقریب مناسبی از خطای واقعی $$ E ( x ) $$ است.

درون یابی خطی در متلب

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

$$ y = y _ 1 + frac ( y _ 2 – y _ 1 ) ( x – x _ 1 ) ( x _ 2 – x _1) $$

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


برای مثال، فرض کنید دو نقطه $$ ( 60 , 15.56 ) $$ و $$ (90 , 32.22)$$ را داریم و می‌خواهیم مقدار $$ y$$ متناظر با $$ x = 73 $$ را به دست آوریم. به راحتی، کد زیر را اجرا می‌کنیم:


که جواب آن برابر است با:

y =    22.7793

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