Многие сигналы, применяемые в электротехнике и радиосвязи, имеют циклический характер. Для их представления в виде непрерывных аналитических функций используют тригонометрический ряд Фурье.
Периодическая функция f(x) с периодом 2L может быть разложена в тригонометрический ряд Фурье вида
где а 0, аk и bk являются коэффициентами Фурье и определяются по формулам Эйлера-Фурье:
Так как на практике количество гармоник ряда Фурье всегда ограничено конечным числом, то это порождает волнообразный характер изменения сигнала и появление выбросов, что известно под названием эффекта Гиббса. Эффект состоит в том, что приближенные значения функции вблизи точек разрыва первого рода колеблются и увеличивается разница между точным и приближенным значением функции.
Разложение функции в ряд Фурье в MATLAB
Задание. Разложить в ряд Фурье на отрезке [-p, p] меандр, заданный с помощью следующей формулы:
График функции f(x) изображен на рис.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) в ряд Фурье.
2. Используя прямое обращение к ядру Maple, зададим кусочно-линейную функцию f(x) с помощью стандартной функции piecewise:
Функция piecewise принимает три параметра и работает подобно условному оператору (if) или оператору выбора (switch — case). Если первый параметр истина, то результатом выполнения функции будет значение второго параметра. В противном случае функция возвратит значение третьего параметра.
3. Вычислим коэффициент а 0:
Так как коэффициент а 0 равен 1, то в ряде Фурье будет присутствовать постоянное слагаемое ½.
4. Определим коэффициент аk:
Так как аргументом функции синуса является произведение числа p на номер члена ряда, то все коэффициенты аk будут равны нулю.
5. Найдем коэффициент bk:
13.2 Разложение функции в ряд Фурье. Пример 1.
Так как аргумент функции косинуса представляет собой произведение числа 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) +.
Аналитическое выражение функции f(x), вычисленное с помощью четырех членов ряда Фурье, состоит из трех слагаемых, так как .
Выполним разложение в ряд Фурье функции f(x) до девятого члена ряда включительно.
>> sum9 = a_0/2 + symsum(a_k*cos(k*x)+. b_k*sin(k*x),k,1,9);
sin(5 x) sin(7 x) sin(9 x)
Аналитическое выражение функции 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];
>> % построение графика функции зеленым цветом
Графики сумм и исходной функции изображенны на рис.2.
8. Получили разложение периодической кусочно-непрерывной функции f(x) в ряд Фурье. При увеличении членов ряда Фурье вблизи точек разрыва на графике можно увидеть существенные отклонения значений ряда от значений функции, т. н. эффект Гиббса.
Источник: poisk-ru.ru
Разложение в ряд Фурье онлайн
Разложение некоторой функции в тригонометрический ряд Фурье на отрезке имеет вид:
Наш онлайн калькулятор находит разложение в ряд Фурье заданной функции с описанием подробного хода решения.
Разложение в ряд Фурье
Переменная функции:
Порядок разложения:
Тип разложения:
Отрезок разложения: [ , ]
Примеры Очистить Ссылка
Загрузка изображения, подождите .
в ряд Фурье на отрезке [
Порядок разложения равен
Установить калькулятор на свой сайт
В качестве примера найдём разложение в ряд Фурье для функции на отрезке . В этом случае длина отрезка разложения и коэффициенты , , вычисляются по формулам:
Таким образом, разложение функции в ряд Фурье на отрезке имеет вид:
На рисунке ниже приведено два графика: (красным цветом) и , (синим цветом) для которого мы взяли порядок разложения равным .
Стоит отметить, что в приведенном выше примере, коэффициенты и равны нулю не случайно. Дело в том, что функция является нечётной. Функция — напротив является чётной. Произведение чётной функции на нечётную является нечётной функцией, поэтому согласно свойствам, определённый интеграл от нечётной функции на симметричном интервале равен нулю.
В случае, если бы мы раскладывали в ряд Фурье на симметричном интервале какую-нибудь чётную функцию, например , коэффициенты равнялись бы нулю, поскольку в этом случае, подынтегральное выражение являлось бы нечётной функцией.
Исходя из приведённых выше рассуждений можно сделать следующие выводы:
Разложение в ряд Фурье нечётной функции на симметричном отрезке будет содержать только слагаемые с синусами.
Разложение в ряд Фурье чётной функции на симметричном отрезке будет содержать только слагаемые с косинусами.
Если нам необходимо получить разложение в ряд Фурье некоторой произвольной функции на отрезке , то у нас есть две возможности. Мы можем продлить эту функцию на отрезок нечётным образом и тогда в разложении получим только синусы. Или же мы можем продлить её на указанный отрезок чётным образом и тогда получим в разложении только косинусы.
Разработанный нами онлайн калькулятор позволяет получать разложение заданной функции в ряд Фурье в общем виде или только по синусам/косинусам, на любом заданном отрезке.
Другие полезные разделы:
Оставить свой комментарий:
Разложение функций в ряд Фурье в Scilab
Предположим, что функция периодична с периодом L = 2 и разложим её в ряд по синусам.
Определим две функции, первая функция g(x) представляет подинтегральное выражение f(x)sin(nitx/L), а другая Ь(п) которая даёт коэффициент Ь„ для разложения функции f(x) в ряд Фурье по синусам.
- —>L=2;
- —>deff(‘[y]=f(x)’,’y=x-4*x A 2′)
- —>deff(‘[w]=g(x)’,’w=f(x)*sin(n*%pi*x/L)’)
- —>deff( , [bb]=b(n)’. [’if n==0 then’; ’bb=0′; ‘else’; ‘bb=(2/L)*intg(0,L,g)’; ‘end’])
- ->c = [];
Рисунок 39 — График функции f(x)=x-4 x 2
- —>forj=l:20 ->с =[cb(j-l)];
- —>end;
- —>с // Коэффициенты ряда Фурье Ьп с =
- 0. -4.7844804 4.4563384 -2.8179961 2.2281692 -1.7495098
- 1.4854461 -1.261204
- 1.1140846 -0.9846346 0.8912677 -0.8071418 0.7427231
- -0.6837115 0.6366198 column 16 to 20
- -0.5929553 0.5570423 -0.5234348 0.4951487 -0.4684864
Выразим исходную функцию через вычисленные коэффициенты. Для этого выполним следующий файл-сценарий four_sin: function [y]=four_sin(c, х, L) m = length(c); n = length(x);
for i = 1 :n УУ = 0; for j = 1 :m
yy = yy + c(j)*sin((j-l)*%pi*x(i)/L); end;
Для графического изображения аппроксимации исходной функции рядом Фурье на отрезке [0, 2] наберем следующие команды —>exec(‘four_sin’)
- —>x=[-2:0.01:3];y=f(x); yf=four_sin(c,x,L);
- —>plot2d([x* x’],[y’ yf],[ 11 ],’01IV ’,[-2 -35 3 20])
В результате получим следующий график:
Рисунок 40 — График функции/fx) =х-4-х 2 и график функции, полученный из 20 членов ряда Фурье
На рисунке 40 непрерывной линией изображён график исходной функции и график функции, полученной из 20 членов ряда Фурье.
Аппроксимация приемлема в интервале 0 help intg).
Интегралы, определяющие коэффициенты а„ и Ь„ вычисляются в интервале [cO,cO+L].
Функция возвращает значения аО, а, Ь, и у, где аО коэффициент аО, а и b векторы, содержащие коэффициенты при косинусе и синусе, т.е., а„ и Ьп для п=1,2.
В матрице у такое же количество столбцов, как количество компонент вектора х, количество рядов равно количеству элементов /г/г.
Отметим, что программа fourierseries включает в себя функцию fseries, которая образует ряд матрицы у.
function [aO,a,b,y] = fourierseries(n,cO,L,x,f,tol) //создать файл fourierseries.sci
//Интегралы вычисляются, используя интервал //[cO,cO+L] где L период функции //если сО = -L/2, то интервал [-L/2,L/2],
Их вектор длины к для вычисления величин фурье ряда //аО = первый коэффициент ряда с cos //а = коэффициенты ряда с cos [al а2 . ]
//b = коэффициенты ряда с sin [Ы Ь2 . ]
//у = матрица из m рядов
deff(’[aaa]=a 1 (nn)’,’aaa=(2/L)*intg(cO,cO+L,g 1 ,tol)’);
deff(‘[bbb]=b 1 (nn)’,’bbb=(2/L)*intg(cO,cO+L,g2,tol)’);
nmax = max(n);a = []; b = [];
a = [a a 1 (j)]; b = [b bl(j)];
m = Iength(n); k = length(x);y = zeros(m,k); for j =1 :m
aj = a(l:n(j));bj = b(l:n(j)); y(j,:) = fseries(aO,aj,bj,x,L); end;
function [yy] = fseries(aO,aa,bb,xx,L) //Создать файл fseries.sci //Вычисление ряда Фурье с учетом коэффициента аО, вектора а //длины пп, коэффициентов ряда при синусах, вектора Ь(длина пп)
//L = период функции, которая фитируется. пп = length(aa); mm = length(xx);yy = zeros(l,mm);
for j = 1 :mm yy = aO/2; for к = 1 :nn
yy = yy + aa(k)*cos(2*k*%pi*x/L) + bb(k)*sin(2*k*%pi*x/L);
Пример 2. Профитируем функцию f(x ) = (2 + x 4 ) ,/2 рядом Фурье в интервале[-1, 1].
Используем ряд из 5 компонент.
- —^еГАС[у]=к(х)7у=8яП(2+х л 4)’)
- —>exec(‘fourierseries’)
~>L = 2; х=[-1:0.01:1]; у = f(x);
- —>faO,a,b,yy]=fourierseries(f5].-L/2,L,x,f,le-5);
- —>plot2d(x’,y’)
- —>plot2d(x’,yy( 1,:)’)
Рассмотрим в качестве другого примера фитироваиие кусочно- непрерывнной функции (прямоугольного импульса) рядом Фурье.
Источник: bstudy.net