گاهی لازم است مقدار تابعy=f(x) را در یک نقطه معین x، بر اساس مقادیر معلوم f(x0)، ... و f(xn) در مجموعه n+1 نقطه a=x0≤x1≤⋯≤xn=b در بازه [a,b] تخمین بزنیم. اگر a<x<b باشد، این فرایند «درونیابی» (Interpolation) نامیده میشود و اگر x<a یا x>b باشد، به آن «برونیابی» (Extrapolation) میگوییم. در این آموزش، با «درون یابی چند جمله ای» (Polynomial Interpolation) آشنا میشویم.
که در آن، n+1 ضریب a0، ... و an را میتوان با n+1 نقطه داده شده به دست آورد. وقتی Pn(x) را به دست آوریم، میتوانیم هر عملیاتی (مانند مشتقگیری، انتگرالگیری، یا یافتن ریشه) را که میخواهیم روی تابع f(x) انجام دهیم، آن را به صورت تقریب به Pn(x)≈f(x) اعمال کنیم. این کار، به ویژه در مواقعی که تابع f(x) یک تابع غیرمقدماتی بوده و در نتیجه، کار با آن دشوار باشد، یا فرم بستهای نداشته باشد، بسیار کارساز خواهد بود.
به طور مشخص، برای یافتن ضرایب Pn(x)، لازم است همه نقاط {xi,yi=f(xi),i=0,⋯,n}، یعنی n+1 معادله خطی زیر را داشته باشیم:
Pn(xi)=j=0∑najxij=f(xi)=yi,(i=0,⋯,n)
اکنون میتوان ضرایب a0، ... و an را با حل این n+1معادله خطی به دست آورد. این معادلات را میتوان به فرمی ماتریسی زیر نوشت:
ماتریس V به عنوان «ماتریس وندرموند» (Vandermonde Matrix) شناخته میشود. با حل این دستگاه، ضرایب [a0,⋯,an]T=a=V−1y به دست میآیند. در اینجا، n+1 چندجملهای x0، x1، x2، ... و xn را میتوان به عنوان مجموعهای از توابع پایه چندجملهای در نظر گرفت که فضای همه چندجملهایهای درجه nاُم را اسپن میکنند. اگر نقاط x0، ... و xn متمایز باشند، یعنی V دارای رتبه کامل بوده و معکوس آن، V−1، وجود داشته باشد، آنگاه جواب سیستم a=V−1f و در نتیجه Pn(x) یکتا است.
البته در عمل این روش به دو دلیل استفاده نمیشود: اول اینکه پیچیدگی محاسباتی O(n3) برای محاسبه معکوس V زیاد است و دوم اینکه با افزایش n ماتریس V بدحالتتر میشود. بنابراین روشهای دیگری نیز برای درونیابی پیشنهاد شدهاند.
خطای درون یابی چند جمله ای اینگونه تعریف میشود:
Rn(x)=f(x)−Pn(x)
که در حالت کلی غیرصفر است، البته جز در نقطه x=xi که Rn(xi)=0,(i=0,⋯,n) است. به عبارت دیگر، تابع خطای Rn(x) دارای n+1 ریشه در x0، ... و xn است و در نتیجه، میتوان آن را به صورت زیر نوشت:
Rn(x)=u(x)i=0∏n(x−xi)=u(x)ω(x)
که در آن، u(x) یک تابع مجهول و ω(x) یک چندجملهای درجه n+1 است که به صورت زیر تعریف میشود:
ω(x)=i=0∏n(x−xi)
برای یافتن u(x)، تابع دیگری به نام F(t) از متغیر t را تشکیل میدهیم که در آن، هر x∈(a,b) به عنوان یک پارامتر در نظر گرفته میشود:
بنابراین، میتوان گفت که F(t) دارای n+2 ریشه در x0، ... و xn و x است. قضیه رول بیان میکند که تابع مشتق f′(x) هر تابع مشتقپذیر f(x) که در رابطه f(a)=f(b)=0 صدق میکند، باید حداقل یک ریشه در c∈(a,b) داشته باشد. طبق «قضیه رول» (Rolle's Theorem)، F′(t) حداقل n+1 ریشه بین دو ریشه متوالی F(t) دارد و F′′(t) حداقل n ریشه، و F(n+1)(t) حداقل یک ریشه در ξ∈(a,b) دارد:
$$ \large \begin {eqnarray}<br />
F ^ { ( n + 1 ) } ( \xi ) = 0 & = & \frac { d ^ { n + 1 } } { d t ^ { n + 1 } }<br />
\left [ f ( t ) - P _ n ( t) - u ( x ) \prod _ { i = 0 } ^ n ( t -x _ i ) \right ] _ { t = \xi }<br />
\nonumber \\<br />
& = & \left [ f ^ { ( n + 1 ) } ( t ) + P _ n ^ { ( n + 1 ) } ( t ) - u ( x ) \frac { d ^ { n + 1 } } { d t ^ { n + 1 } } \prod _ { i = 0 } ^ n ( t - x _ i ) \right ] _ { t = \xi }<br />
\nonumber \\<br />
& = & f ^ { ( n + 1 ) } ( \xi ) - u ( x ) ( n + 1 ) !<br />
\end {eqnarray} $$
معادله آخر به این دلیل است که Pn(t) و i=0∏n(t−xi)، به ترتیب، چندجملهایهایی از درجه n و n+1 از t هستند. با حل معادله بالا، داریم:
u(x)=(n+1)!f(n+1)(ξ)
اکنون تابع خطا را میتوان به صورت زیر نوشت:
Rn(x)=u(x)i=0∏n(x−xi)=(n+1)!f(n+1)(ξ)ω(x)
که در آن، ξ(x) نقطهای است که بسته به x، بین a=x0 و b=xn واقع شده است. خطا را میتوان به صورت کمّی و توسط نُرم دوRn(x) اندازهگیری کرد:
ϵ=∣∣Rn(x)∣∣2=(∫abRn2(x)dx)1/2
در عمل، اگر f(x) یک چندجملهای مرتبه k≤n و در نتیجه f(n+1)(x)=0 باشد، آنگاه میتوان آن را با Pn(x) رونیابی دقیق کرد. اما اگر k>n باشد، درونیابی یک جمله خطای غیرصفر f(n+1)(x)=(n+1)! دارد و جمله خطا به صورت زیر در خواهد آمد:
Rn(x)=(n+1)!f(n+1)(ξ)ω(x)=ω(x)
به دلیل یکتایی درون یابی چند جمله ای ، تحلیل خطای بالا را میتوان به همه روشهای دیگر درونیابی، از قبیل لاگرانژ و نیوتن نیز اعمال کرد.
مثال درون یابی چند جمله ای
تابع y=f(x)=xsin(2x+π/4)+1 را با یک چندجملهای P3(x) با درجه n=3، طبق n+1=4 نقطه زیر تقریب بزنید.
و در نتیجه، چندجملهای درونیاب به عنوان یک مجموع وزندار از n+1=4 تابع توانی به عنوان توابع پایه برای اسپن فضای چندجملهای به دست میآید:
P3(x)=j=0∑najxj=1.0+0.369x+0.643x2−0.663x3
این چندجملهای درونیاب P3(x) در شکل زیر نشان داده شده و با تابع اصلی f(x) مقایسه شده است. خطای ϵ را میتوان با یک مجموعه از k>>n نمونه گسسته u1، ... و uk از تابع f(x) و چندجملهای درونیاب P3(x) تقریب زد:
1function[v P]=PI(u,x,y)2% vectors x and y contain n+1 points and the corresponding function values3% vector u contains all discrete samples of the continuous argument of f(x)4 n=length(x);% number of interpolating points5 k=length(u);% number of discrete sample points6 v=zeros(1,k);% polynomial interpolation 7 P=zeros(n,k);% power function basis polynomials8 V=zeros(n);% Vandermonde matrix9fori=1:n
10forj=1:n
11V(i,j)=x(i)^(j-1);12end13end14 c=inv(V)*y;% coefficients15fori=1:n
16P(i,:)=u.^(i-1);17 v=v+c(i)*P(i,:);18end19end
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
سید سراج حمیدی دانشآموخته مهندسی برق است و به ریاضیات و زبان و ادبیات فارسی علاقه دارد. او آموزشهای مهندسی برق، ریاضیات و ادبیات مجله فرادرس را مینویسد.
۷ دیدگاه برای «درون یابی چند جمله ای — به زبان ساده»
شهاب
من فکر میردم میبایست ماتریس معوس وندرموند محاسبه و اعمال میشد نه اینکه خود ماتریس وندرموند. آیا اشتباه میکنم؟ لطفا راهنمایی بفرمایید
شهاب
در ماتریس وندرموند به جای عدد 8 عدد 9 مرقوم شده است. ssss
حسین زبرجدی دانا
با سلام؛
متن اصلاح شد.
از همراهی شما با مجله فرادرس سپاسگزاریم
مهرداد
سلام.بخشید u رو توی matlab باید چی بزنیم که برنامه جواب بده؟
مهراد ترکمان
عذر خواهی میکنم منظورم پدیده رونگه یا همون runge phenomenon بود. فکر میکنم میتونه معایب این روش درون یابی و ارجحیت درونیابی اسپلاین رو بخوبی نشون بده. باتشکر از سایت خوبتون.
من فکر میردم میبایست ماتریس معوس وندرموند محاسبه و اعمال میشد نه اینکه خود ماتریس وندرموند. آیا اشتباه میکنم؟ لطفا راهنمایی بفرمایید
در ماتریس وندرموند به جای عدد 8 عدد 9 مرقوم شده است. ssss
با سلام؛
متن اصلاح شد.
از همراهی شما با مجله فرادرس سپاسگزاریم
سلام.بخشید u رو توی matlab باید چی بزنیم که برنامه جواب بده؟
عذر خواهی میکنم منظورم پدیده رونگه یا همون runge phenomenon بود. فکر میکنم میتونه معایب این روش درون یابی و ارجحیت درونیابی اسپلاین رو بخوبی نشون بده. باتشکر از سایت خوبتون.
سلام.
در مطلب «درون یابی اسپلاین — از صفر تا صد» به پدیده رونگه اشاره کردهایم.
سپاس از همراهیتان.
راجع به پدیده رانگ هم توضیح دهید. با تشکر.