درون یابی مثلثاتی — به زبان ساده

۶۲۹ بازدید
آخرین به‌روزرسانی: ۱۳ اردیبهشت ۱۴۰۲
زمان مطالعه: ۱۰ دقیقه
درون یابی مثلثاتی — به زبان ساده

درون یابی مثلثاتی (Trigonometric Interpolation) یک روش درون‌یابی با استفاده از چندجمله‌ای‌های مثلثاتی است. همان‌طور که می‌دانیم، درون‌یابی فرایندی برای یافتن تابعی است که تعدادی نقطه معلوم از آن می‌گذرد. در درون یابی مثلثاتی ، این تابع باید یک چندجمله‌ای مثلثاتی باشد که مجموع سینوس‌ها و کسینوس‌ها است. این فرم، به ویژه برای درون‌یابی توابع دوه‌ای یا متناوب مناسب است.

درون یابی مثلثاتی

یک چندجمله‌ای مثلثاتی درجه $$ K $$ به شکل زیر است:

$$ \large p ( x ) = a _ 0 + \sum _ { k = 1 } ^ K a _ k \cos ( k x ) + \sum _ { k = 1 } ^ K b _ k \sin ( k x ) . \;\;\;\;\; ( 1 ) $$

این عبارت شامل $$ 2 K + 1 $$ ضریب $$ a _ 0 $$، $$ a _ 1 $$، ...، $$ a _ k $$، $$ b _ 1 $$، ... و $$ b _ k $$ است و باید این ضرایب را طوری محاسبه کنیم که تابع از $$ N $$ نقطه زیر عبور کند:

$$ \large p ( x _ n ) = y _ n , \quad n = 0 , \ldots , N - 1 . $$

از آنجا که چندجمله‌ای مثلثاتی با دروه تناوب $$ 2 \pi $$ دروه‌ای یا متناوب است، $$ N $$ نقطه را می‌توان در یک تناوب به شکل زیر مرتب کرد:

$$ \large 0 \leq x _ 0 < x _ 1 < x _ 2 < \ldots < x _ { N - 1 } < 2 \pi . $$

دقت کنید که فاصله بین نقاط لزوماً‌ برابر نیست. اکنون مسئله درون‌یابی، یافتن ضرایب به گونه‌ای است که چندجمله‌ای مثلثاتی $$ p $$ در شرایط درون‌یابی صدق کند.

فرمول‌بندی در صفحه مختلط

اگر مسئله را در صفحه مختلط فرمول‌بندی کنیم، کارسازتر خواهد بود. می‌توانیم فرمول یک چندجمله‌ای مثلثاتی را به صورت $$ p ( x ) = \sum _ { k = - K } ^ K c _ k e ^ { i k x } $$ بازنویسی کنیم که در آن، $$ i$$ واحد موهومی است. اگر $$ z = e ^ {i x } $$ را قرار دهیم، خواهیم داشت:

$$ \large q ( z ) = \sum _ { k = - K } ^ K c _ k z ^ { k } $$

همچنین، $$ q ( e ^ { i x } ) \triangleq p ( x )  $$ را در نظر می‌گیریم.

در این صورت، مسئله درون یابی مثلثاتی به درون‌یابی چندجمله‌ای روی دایره واحد کاهش می‌یابد. وجود و یکتایی درون یابی مثلثاتی به سادگی برای درون‌یابی چندجمله‌ای متناظر آن به دست می‌آید.

جواب مسئله

تحت شرایط بالا، برای هر مجموعه $$N$$تایی از نقاط $$ \{ x _ k , y _ k \} $$ جوابی برای مسئله وجود دارد. تعداد نقاط $$N$$ بزرگ‌تر از تعداد ضرایب چندجمله‌ای نیست، یعنی $$ N \le 2 k + 1 $$ (اگر $$ N > 2 k + 1 $$ باشد، بسته به نقاط، ممکن است جواب وجود داشته باشد یا وجود نداشته باشد). علاوه بر این، چندجمله‌ای درون‌یاب یکتاست اگر و تنها اگر تعداد ضرایب قابل تنظیم برابر با تعداد نقاط باشد، یعنی $$ N = 2 k + 1 $$. در ادامه، فرض می‌کنیم این شرط به درستی برقرار است.

تعداد نقاط فرد

اگر تعداد نقاط $$N$$ فرد باشد، یعنی $$ N = 2 k + 1 $$، اعمال فرمول لاگرانژ برای درون‌یابی چندجمله‌ای، در صفحه مختلط منجر به جوابی به فرم زیر می‌شود:

$$ \large p ( x ) = \sum _ { k = 0 } ^ { 2 K } y _ k \, t _ k ( x ) \;\;\;\;\; ( 2 ) $$

که در آن:

$$ t _ k ( x ) = e ^ { - i K x + i K x _ k } \prod _ { m = 0 , m \ne k } ^ { 2 K } \frac { e ^ { i x } - e ^ { i x _ m } }{ e ^ { i x _ k } - e ^ { i x _ m } } . \;\;\;\;\; ( 3 )$$

ضریب $$ e ^ { - i K x + i K x _ k } $$ در این فرمول، برای جبران این مسئله است که فرمول‌بندی صفحه مختلط شامل توان‌های منفی $$ e ^ { i x } $$ نیز بوده و به همین دلیل یک چندجمله‌ای برحسب $$ e ^{ i x } $$ نیست. صحت این موضوع را می‌توان به سادگی با مشاهده $$ t _ k ( x _ k ) = 1 $$ و اینکه $$ t _ k ( x ) $$ یک ترکیب خطی از توان‌های $$ e ^ { i x } $$ است، تأیید کرد. با استفاده از اتحادِ

$$ \large e ^ { i z _ 1 } - e ^ { i z _ 2 } = 2 i \sin \left ( \frac { z _ 1 - z _ 2 } { 2 } \right ) e ^ { i \frac 1 2 z _ 1 + i \frac 1 2 z _ 2 } \;\;\;\;\; ( 4 )$$

ضریب $$ t _ k ( x ) $$ را می‌توان به فرم زیر نوشت:

$$ \large t _ k ( x ) = \prod _ { m = 0 , m \ne k } ^ { 2 K } \frac { \sin \frac 1 2 ( x - x _ m ) } { \sin \frac 1 2 ( x _ k - x _ m ) } . \;\;\;\;\; (5)$$

تعداد نقاط زوج

اگر تعداد نقاط $$N$$ زوج باشد، یعنی $$ N = 2 K $$، اعمال فرمول لاگرانژ برای درون‌یابی چندجمله‌ای برای فرمول‌بندی چندجمله‌ای در صفحه مختلط منجر به جوابی به فرم زیر می‌شود:

$$ \large p ( x ) = \sum _ { k = 0 } ^ { 2 K - 1 } y _ k \, t _ k ( x )\;\;\;\;\; (6) $$

که در آن:

$$ \large t _ k ( x ) = e ^ { - i K x + i K x _ k } \frac { e ^ { i x } - e ^ { i \alpha _ k } } { e ^ { i x _ k } - e ^ { i \alpha _ k } } \prod _ { m = 0 , m \ne k } ^ { 2 K - 1 } \frac { e ^ { i x } - e ^ { i x _ m } } { e ^ { i x _ k } - e ^ { i x _ m } } . \;\;\;\;\; ( 7 )$$

در اینجا ثابت $$ \alpha _ k $$ را می‌توان به صورت دلخواه انتخاب کرد. این امر به آن دلیل است که تابع درون‌یاب (۱) شامل تعداد فردی از ضرایب مجهول است. انتخاب معمول آن است که بالاترین فرکانس به فرم یک ثابت ضرب در $$ \cos ( K x ) $$ باشد، یعنی جمله $$ \sin ( K x ) $$ حذف می‌شود، اما در حالت کلی، فاز بالاترین فرکانس را می‌توان به گونه‌ای انتخاب کرد که $$ \varphi _  K $$ باشد. برای به دست آوردن عبارت $$ \alpha _ k $$ با استفاده از (۲) و (۳) می‌توان نوشت:

$$\large  t _ k ( x ) = \frac { \cos \left ( K x - \frac 1 2 \alpha _ k + \frac 1 2 \sum \limits _ { m = 0 , m \ne k } ^ { 2 K - 1 } x _ m \right ) + \sum \limits _ { m = - ( K - 1 ) } ^ { K - 1 } c _ k e ^ { i m x } } { 2 ^ N \sin ( \frac { x _ k - \alpha _ k }{ 2 } ) \prod \limits _ { m = 0 , m \ne k } ^ { 2 K - 1 } \sin ( \frac { x _ k - x _ m } { 2 } ) } . \;\;\;\;\; (8)$$

به مبهم شدن ناشی از صفر شدن مخرج توجه داشته باشید.

در نظر گرفتن نقاط با فواصل برابر

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

$$ \large x _ m = \frac { 2 \pi m } { N } $$

باز هم دو حالت را بررسی می‌کنیم.

تعداد نقاط فرد

ساده‌سازی بیشتر با استفاده از (2) یک رویکرد بدیهی است. یک روش بسیار ساده‌تر در نظر گرفتن «هسته دیریکله» (Dirichlet Kernel) است:

$$ \large D ( x , N ) = \frac { 1 } { N } + \frac { 2 } { N } \sum _ { k = 1 } ^ { \frac 1 2 ( N - 1 ) } \cos ( k x ) = \frac { \sin \frac 1 2 N x } { N \sin \frac 1 2 x } \;\;\;\;\; (9)$$

که در آن، $$ N > 0 $$ فرد است. به سادگی می‌توان مشاهده کرد که $$ D ( x , N) $$ یک ترکیب خطی از کسینوس‌های $$ e ^ { i x } $$ بوده و داریم:

$$ \large D ( x _ m , N ) = \begin {cases} 0 \text { for } m \neq 0 \\1\text { for } m = 0 \end {cases} . $$

از آنجا که این دو ویژگی به طور یکتا ضرایب $$ t _ k ( x ) $$ را در (۵) تعریف می‌کنند، خواهیم داشت:

$$ \large \begin {align}
t _ k ( x ) & = D ( x - x _ k , N ) = \begin {cases}
\frac { \sin \frac 1 2 N ( x - x _ k ) } { N \sin \frac 1 2 ( x -x _ k ) } \text{ for } x \neq x _ k \\
\lim \limits _ { x \to 0 } \frac { \sin \frac 1 2 N x } { N \sin \frac 1 2 x } = 1 \text { for } x = x _ k
\end {cases} \\ & = \frac { \mathrm {sinc} \, \frac 1 2 N ( x - x _ k ) } { \mathrm {sinc} \, \frac 1 2 ( x - x _ k ) } .
\end {align} \;\;\;\;\; (10)$$

در اینجا، تابع $$\mathrm {sinc}$$ از هرگونه تکینگی جلوگیری کرده و به صورت زیر تعریف می‌شود:

$$ \large \mathrm {sinc} \, x = \frac { \sin x } { x } . $$

تعداد نقاط زوج

برای تعداد نقاط زوج $$N$$، هسته دیریکله را به صورت زیر تعریف می‌کنیم:

$$ \large  D ( x , N ) = \frac { 1 } { N } +\frac { 1 } { N } \cos \frac 1 2 N x + \frac { 2 } { N } \sum _ { k = 1 } ^ { \frac 1 2 N - 1 } \cos ( k x ) = \frac { \sin \frac 1 2 N x } { N \tan \frac 1 2 x } . \;\;\;\;\; (11)$$

دوباره، به سادگی می‌توان دید که $$ D ( x , N) $$ یک ترکیب خطی از توان‌های کسینوسی $$ e ^ { i x } $$ است و شامل جمله $$ \sin \frac { 1 } { N} N x $$ نیست و در رابطه زیر صدق می‌کند:

$$ \large D ( x _ m , N ) = \begin {cases} 0 \text{ for } m \neq 0 \\ 1 \text { for } m = 0 \end {cases} . $$

با استفاده از این مشخصات، ضرایب $$ t _ k ( x ) $$ در (۶) به صورت زیر داده می‌شوند:‌

$$ \large \begin {align}
t _ k ( x ) & = D ( x - x _ k , N ) = \begin {cases}
\frac { \sin \frac 1 2 N ( x - x _ k ) } { N \tan \frac 1 2 ( x -x _ k ) } \text { for } x \neq x _ k \\
\lim \limits _ { x \to 0 } \frac { \sin \frac 1 2 N x } { N \tan \frac 1 2 x } = 1 \text { for } x = x _ k .
\end {cases} \\ & = \frac { \mathrm { sinc} \, \frac 1 2 N ( x - x _ k ) } { N \mathrm { sinc} \, \frac 1 2 ( x - x _ k ) } \cos \frac 1 2 ( x - x _ k )
\end {align} \;\;\;\;\;(12)$$

توجه کنید که $$ t _ k ( x ) $$ شامل $$ \sin \frac { 1 } { 2 } N x $$ نیست. در نهایت، باید گفت که $$ \sin \frac { 1 } { 2 } N x $$ در همه نقاط $$ x _ m $$ حذف می‌شود.

رابطه درون یابی مثلثاتی با تبدیل فوریه گسسته

در حالت خاصی که فاصله نقاط $$ x _ n $$ با هم برابر است، داریم:

$$ x _ n = 2 \pi \frac { n } { N } , \qquad 0 \leq n < N . $$

تبدیلی که نقطه داده‌های $$ y _ n $$ را به ضرایب $$ a _ k $$ و $$ b _ k $$ مربوط می‌کند از تبدیل فوریه گسسته (DFT) مرتبه $$N$$ به دست می‌آید:

$$ Y _ k = \sum _ { n = 0 } ^ { N - 1 } y _ n \ e ^ { - i 2 \pi \frac { n k } { N } } $$

$$ y _ n = p ( x _ n ) = \frac { 1 } { N } \sum _ { k = 0 } ^ { N - 1 } Y _ k \ e ^ { i 2 \pi \frac { n k } { N } } $$

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

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

1function P = triginterp(xi,x,y)
2% TRIGINTERP Trigonometric interpolation.
3% Input:
4%   xi  evaluation points for the interpolant (vector)
5%   x   equispaced interpolation nodes (vector, length N)
6%   y   interpolation values (vector, length N)
7% Output:
8%   P   values of the trigonometric interpolant (vector)
9N = length(x);
10% Adjust the spacing of the given independent variable.
11h = 2/N;
12scale = (x(2)-x(1)) / h;
13x = x/scale;  xi = xi/scale;
14% Evaluate interpolant.
15P = zeros(size(xi));
16for k = 1:N
17  P = P + y(k)*trigcardinal(xi-x(k),N);
18end
19
20function tau = trigcardinal(x,N)
21ws = warning('off','MATLAB:divideByZero');
22% Form is different for even and odd N.
23if rem(N,2)==1   % odd
24  tau = sin(N*pi*x/2) ./ (N*sin(pi*x/2));
25else             % even
26  tau = sin(N*pi*x/2) ./ (N*tan(pi*x/2));
27end
28warning(ws)
29tau(x==0) = 1;     % fix value at x=0

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

^^

بر اساس رای ۶ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Wikipedia
۲ دیدگاه برای «درون یابی مثلثاتی — به زبان ساده»

با سلام
میشه در رابطه با چندجمله ای های مثلثاتی بیشتر توضیح بدین یا ی کتاب معرفی کنید که مثالی از این چندجمله ای ها داشته باشه
با سپاس فراوان

سلام. این چندجمله‌ای‌ها در توابع مختلط نیز مورد بحث قرار می‌گیرند. برای آشنایی بیشتر، پیشنهاد می‌کنیم به «آموزش توابع مختلط (Complex Functions)» مراجعه کنید.
از همراهی‌تان با مجله فرادرس، سپاسگزاریم.

نظر شما چیست؟

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