Разложение функций в ряд Фурье
Многие сигналы, применяемые в электротехнике и радиосвязи, имеют циклический характер. Для их представления в виде непрерывных аналитических функций используют тригонометрический ряд Фурье.
Периодическая функция 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) в ряд Фурье. При увеличении членов ряда Фурье вблизи точек разрыва на графике можно увидеть существенные отклонения значений ряда от значений функции, т. н. эффект Гиббса.