Разложение функции в ряд Фурье в MATLAB




Разложение функций в ряд Фурье

 

Многие сигналы, применяемые в электротехнике и радиосвязи, имеют циклический характер. Для их представления в виде непрерывных аналитических функций используют тригонометрический ряд Фурье.

Периодическая функция f(x) с периодом 2L может быть разложена в тригонометрический ряд Фурье вида

где а 0, аk и bk являются коэффициентами Фурье и определяются по формулам Эйлера-Фурье:

Так как на практике количество гармоник ряда Фурье всегда ограничено конечным числом, то это порождает волнообразный характер изменения сигнала и появление выбросов, что известно под названием эффекта Гиббса. Эффект состоит в том, что приближенные значения функции вблизи точек разрыва первого рода колеблются и увеличивается разница между точным и приближенным значением функции.

Разложение функции в ряд Фурье в MATLAB

Задание. Разложить в ряд Фурье на отрезке [-p, p] меандр, заданный с помощью следующей формулы:

График функции f(x) изображен на рис.1.

Рис.1

Решение. Разложение периодической кусочно-непрерывной функции в MATLAB осуществляется по шагам:

1. Формирование символьных переменных, которые будут использоваться как при создании функции, так и при ее разложении в ряд. Обычно, в качестве таких символьных переменных выступают: аргумент функции x, номер членов ряда k, символьное представление числа p и граница диапазона T.

2. Создание аналитической записи для заданной функции. При создании функции можно либо использовать стандартные функции ППП Symbolic Math, либо напрямую вводить команды в ядро Maple.

3. Определение коэффициента а 0.

4. Получение аналитического выражения для коэффициентов аk.

5. Формирование аналитического выражения для коэффициентов bk.

6. Получение тригонометрических рядов Фурье с различным числом членов ряда.

7. Построение графиков функции f(x) и ее разложений в ряд Фурье с различным числом членов ряда.

8. Анализ полученных результатов.

Выполним разложение заданной функции f(x) в ряд Фурье:

1. Создадим символьные переменные x (независимая переменная), k (количество членов ряда) и pi (символьное обозначение p), которые будем использовать в командах MATLAB при реализации разложения функции f(x) в ряд Фурье.

>> syms x k pi

2. Используя прямое обращение к ядру Maple, зададим кусочно-линейную функцию f(x) с помощью стандартной функции piecewise:

>> f_x=maple('piecewise(x>0,1,0)')

f_x =

PIECEWISE([1, 0 < x],[0, otherwise])

Функция piecewise принимает три параметра и работает подобно условному оператору (if) или оператору выбора (switch - case). Если первый параметр истина, то результатом выполнения функции будет значение второго параметра. В противном случае функция возвратит значение третьего параметра.

3. Вычислим коэффициент а 0:

>> a_0=1/pi*int(f_x,x,-pi,pi)

a_0 =

Так как коэффициент а 0 равен 1, то в ряде Фурье будет присутствовать постоянное слагаемое ½.

4. Определим коэффициент аk:

>> a_k=1/pi*int(f_x*cos(k*x),x,-pi,pi);

>> pretty(a_k)

sin(pi k)

---------

pi k

Так как аргументом функции синуса является произведение числа p на номер члена ряда, то все коэффициенты аk будут равны нулю.

5. Найдем коэффициент bk:

>> b_k=1/pi*int(f_x*sin(k*x),x,-pi,pi);

>> pretty(b_k)

cos(pi k) - 1

- -------------

pi k

Так как аргумент функции косинуса представляет собой произведение числа p на номер члена ряда, то все четные коэффициенты bk будут равны нулю, а нечетные – отношению 2/(p k), где k – номер члена ряда (1, 3, 5, …).

6. Выполним разложение в ряд Фурье функции f(x) до четвертого члена ряда включительно. При разложении в ряд Фурье используется стандартная функция ППП Symbolic Math symsum, предназначенная для вычисления сумм, заданных в символьном виде.

>> sum4 = a_0/2 + symsum(a_k*cos(k*x) +...

b_k*sin(k*x),k,1,4);

>> pretty(sum4)

sin(x) sin(3 x)

1/2 + 2 ------ + 2/3 --------

pi pi

Аналитическое выражение функции f(x), вычисленное с помощью четырех членов ряда Фурье, состоит из трех слагаемых, так как .

Выполним разложение в ряд Фурье функции f(x) до девятого члена ряда включительно.

>> sum9 = a_0/2 + symsum(a_k*cos(k*x)+... b_k*sin(k*x),k,1,9);

>> pretty(sum9)

sin(x) sin(3 x)

1/2 + 2 ------ + 2/3 --------

pi pi

sin(5 x) sin(7 x) sin(9 x)

+ 2/5 ------- + 2/7 -------- + 2/9 --------

pi pi pi

Аналитическое выражение функции f(x), представленное в виде ряда Фурье с девятью членами ряда, состоит из шести слагаемых.

7. Построим графики точной функции (зеленый) и рядов Фурье с четырьмя (синий) и девятью членами (красный).

>> clear pi % удаление символьного объекта pi

>> % построение ряда Фурье с четырьмя членами ряда

>> ezplot(sum4) % диапазон от – 2pi до 2pi

>> % задание сетки и режима наложения графиков

>> grid on, hold on

>> % построение ряда Фурье с девятью членами ряда

>> ezplot(sum9) % диапазон от –2pi до 2pi

>> % задание числовых значений функции f(x)

>> % в MATLAB на отрезке от –2pi до 2pi

>> xd=[-2*pi -pi -pi 0 0 pi pi 2*pi];

>> yd=[1 1 0 0 1 1 0 0];

>> % построение графика функции зеленым цветом

>> plot(xd,yd,'g')

Графики сумм и исходной функции изображенны на рис.2.

Рис.2

8. Получили разложение периодической кусочно-непрерывной функции f(x) в ряд Фурье. При увеличении членов ряда Фурье вблизи точек разрыва на графике можно увидеть существенные отклонения значений ряда от значений функции, т. н. эффект Гиббса.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: