Программа разложение функции в ряд фурье

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

Периодическая функция 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) в ряд Фурье по синусам.

График функции f(x)=x-4 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])

В результате получим следующий график:

График функции/fx) =х-4-х и график функции, полученный из 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru