آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

محاسبه ضرایب سری فوریه یک تابع متناوب، بدون داشتن عبارت تابع و تنها با استفاده از مقادیر گسسته تابع، در متلب

در مبحثی دیگر ( کلید شماره 103 )، چگونگی به دست آوردن ضرایب سری فوریه یک تابع متناوب را شرح دادیم، اما در آن مبحث، ما عبارت معادل برای تابع را داشتیم، اما گاهی پیش می آید که عبارت تابع را نداریم و تنها مقادیر گسسته متناظر با تابع را در یک بازه داریم. در چنین مواردی، باید برای به دست آوردن ضرایب سری فوریه تابع، انتگرالی که در فرمول آنها به کار می رود را به صورت تقریبی محاسبه کنیم.

در این مبحث، می خواهیم تابع سینوس x را بررسی کنیم، بنابراین ابتدا مقادیر را با تابع sin موجود در متلب به دست می آوریم، سپس فرض می کنیم که عبارت خود تابع (یعنی سینوس) را نمی دانیم و تنها با استفاده از مقادیر گسسته تابع، می خواهیم ضرایب سری فوریه را به دست آوریم.

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

با استفاده از ضرایب سری فوریه یک تابع متناوب، می توانیم آن تابع را بر حسب مجموعه ای از توابع پایه تقریب بزنیم. فرض کنید تابع f(x) دارای دوره تناوب باشد. در این صورت این تابع را می توانیم بر حسب ضرایبی از sin و cos به دست آوریم. این ضرایب به صورت زیر محاسبه می شوند :

\[ a_n={1 \over \pi}\int_{-\pi}^{\pi} f(x)cos(nx)\,dx, ~~~~~ n \geq 0 \] \[ b_n={1 \over \pi}\int_{-\pi}^{\pi} f(x)sin(nx)\,dx, ~~~~~ n \geq 1 \]

نکته مهم این است که برای به دست آوردن ضرایب سری فوریه، تابع f(x) حتما باید در بازه دوره تناوب خود، انتگرال پذیر باشد.

تابع f(x) را نیز به وسیله این ضرایب می توانیم به صورت زیر تقریب بزنیم :

\[ (S_Nf)(x)={a_0 \over 2} + {\sum_{n=1}^N [a_ncos(nx)+b_nsin(nx)],} ~~~~~ N \geq 0 \]

اکنون یک برنامه متلب می نویسیم که به صورت تقریبی و با استفاده از مقادیر تابع، انتگرال موجود در فرمول ضرایب را (با به دست آوردن سطح زیر منحنی در شکل تابع) به دست آورد و تا یک اندیس مشخص (مثلا 10) مقادیر ضرایب را برایمان محاسبه کند و سپس بر اساس آنها، تابع را رسم کنیم تا شکل تابع به دست آید :


clear all
close all
clc

dx=0.01;
x=-pi:dx:pi;
f=sin(x);
plot(x,f,'linewidth',3)
title('f')

x_length=length(x);
N=10;

sum_value=0;
for k=1:x_length-1
    sum_value=sum_value+dx*f(k)*cos(0*x(k));
end
integral_value=(1/pi)*sum_value;
a_0=integral_value;

for n=1:N
    sum_value=0;
    for k=1:x_length-1
        sum_value=sum_value+dx*f(k)*cos(n*x(k));
    end
    integral_value=(1/pi)*sum_value;
    a_n(n)=integral_value;
   
    sum_value=0;
    for k=1:x_length-1
        sum_value=sum_value+dx*f(k)*sin(n*x(k));
    end
    integral_value=(1/pi)*sum_value;
    b_n(n)=integral_value;
end
a_n
b_n

f_new=a_0/2;
for n=1:N
     f_new=f_new+a_n(n)*cos(n*x)+b_n(n)*sin(n*x);
end

figure
plot(x,f_new,'r','linewidth',3)
title('f-new')

متغیر N برابر حداکثر مقدار اندیس برای ضرایب سری فوریه تعریف شده است. اگر قصد دارید که مثلا ضرایب سری فوریه تا اندیس های برابر 20 محاسبه شود، باید مقدار آن را به عدد 20 تغییر بدهید.

نتیجه :

شکل تابع اصلی :

محاسبه ضرایب سری فوریه یک تابع متناوب، بدون داشتن عبارت تابع و تنها با استفاده از مقادیر گسسته تابع، در متلب

شکل تابع تقریب زده شده (با استفاده از ضرایب سری فوریه) :

محاسبه ضرایب سری فوریه یک تابع متناوب، بدون داشتن عبارت تابع و تنها با استفاده از مقادیر گسسته تابع، در متلب

مقادیر به دست آمده برای ضرایب سری فوریه :


a_n =

  1.0e-005 *

  Columns 1 through 9

    0.6684   -0.6684    0.6684   -0.6683    0.6683   -0.6682    0.6681   -0.6680    0.6679

  Column 10

   -0.6677


b_n =

  Columns 1 through 9

    1.0000    0.0000   -0.0000    0.0000   -0.0000    0.0000   -0.0000    0.0000   -0.0000

  Column 10

    0.0000
نویسنده علیرضا گلمکانی
شماره کلید 2548
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 2 2 0
zh
۱۳۹۶/۰۴/۰۹
۰۹:۰۳

:بسم الله الرحمن الرحیم"

با سلام و وقت به خیر خدمت شما...خداقوت

من دقیقا عکس این مساله رو دارم....تو حوزه ی فرکانس، یه تابع گسسته دارم که می خوام ازش عکس فوریه بگیرم

ممنون میشم به پرسشم پاسخ بدید...و اگر امکانش هست برام ایمیل بزنید

متشکرم و در پناه خدای مهربان

Armin
۱۳۹۶/۰۷/۳۰
۱۶:۵۹

با سلام
واقعا خیلی بدرد خورد و مفید بود 
ممنون از سایت فوق العادتون

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)