5.5. Aппроксимация функции конечным рядом Фурье

Eсли функция f (x) задана на отрезке [0, 2p] в (2N+1) диск­ретных точках, т.е. с шагом 2p / (2N+1), то она может быть представлена как

.
(5.5)
причем £ M £ N и £ x £ 2 p.

Поскольку система функций, участвующих в разложении (5.5), ортогональна на заданном дискретном множестве точек, коэффициен­ты разложения представляются формулами

Eсли в разложении (5.5) M = N, то (2N+1) значений f (x) (x = 0,1,…, 2N) определяют (2N+1) коэффициентов Ak, Bk. Известно, что сумма ряда в заданных точках будет в точности равна значениям исходной функции, т.е. в заданных точках обеспе­чивается точное совпадение исходной и приближающей функций.

Очень часто разложение в ряд Фурье используется как фильтр, который позволяет устранить верхнюю часть спектра. При разложе­нии в ряд Фурье в спектре будут представлены лишь те гармоники, которые содержат не более M периодов в интервале задания исход­ной функции.

Pеализация метода состоит из трех подпрограмм. Подпрограмма FORIT вычисляет указанное количество коэффициентов M для функ­ции, определенной на дискретном множестве точек, а подпрограмма FORIF - заданное число коэффициентов M ряда Фурье, аппроксимиру­ющего исходную функцию, значения которой определяются с помощью подпрограммы-функции на отрезке [0, 2p] в (2N+1) диск­ретных точках с шагом 2p / (2N+1). По коэффициентам разложения в ряд Фурье, полученным таким образом, можно построить приближающую кривую для функции, заданной на произвольном отрезке. Для этой цели предназначена подпрограмма FORFIT. Kривая может быть вычерчена как непрерыв­ной, так и штриховой линией. (Программы FORIT и FORIF заимство­ваны из пакета научных подпрограмм фирмы IBM).

Программа FORFIT(M,A,B,XBEG,XEND,MPTS) позволяет начертить кривую для периодической функции, заданной коэффициентами разло­жения в ряд Фурье. Kоэффициенты могут быть получены с помощью подпрограмм FORIT или FORIF. Параметры программы:

M
количество гармоник, участвующих в разложении;
A
вектор коэффициентов при косинусах в разложении функции длины (M +1) (коэффициенты располагаются в порядке возрастания индекса);
B
вектор коэффициентов при синусах в разложении функции длины (M +1) (коэффициенты располагаются в порядке возрастания индекса, причем B(1) = 0);
XBEG,XEND
значения аргументов, соответствующих левому и правому концу отрезка, на котором определена функция;
|MPTS|
число интервалов, покрывающих аппроксимирующую кривую (ширина интервала = (XEND-XBEG) / MPTS,  MPTS ¹ 0)
MPTS > 0 - аппроксимирующая кривая проводится непрерывной линией,
MPTS < 0 - аппроксимирующая кривая проводится штриховой линией.

Программа FORIT(FNT,N,M,A,B,IER) позволяет вычислить коэффи­циенты ряда Фурье, аппроксимирующего исходную табулированную функцию, заданную на отрезке [0, 2p] в (2N+1) равноотстоящих точках. Параметры программы:

FNT
вектор, задающий (2N+1) значений табулированной функ­ции;
N
определяет отрезок так, что на отрезке [0, 2p] значения заданы в (2N+1) равноотстоящих точках с шагом 2p / (2N+1);
M
количество гармоник, участвующих в разложении;
A
вектор коэффициентов при косинусах в разложении функции длины (M +1) (коэффициенты располагаются в порядке возрастания индекса);
B
вектор коэффициентов при синусах в разложении функции длины (M +1) (коэффициенты располагаются в порядке возрастания индекса, причем B(1) = 0);
IER
код ошибки:
Значение
Смысл
= 0 ошибки нет,
= 1 N < M
= 2 M < 0

Программа FORIF(FUN,N,M,A,B,IER) позволяет вычислить коэффи­циенты ряда Фурье, аппроксимирующего исходную функцию, значения которой вычисляются с помощью подпрограммы-функции на отрезке [0, 2p] в (2N+1) точках с шагом 2p / (2N+1) Параметры про­граммы:

FUN
имя подпрограммы-функции, которая используется для вычисления значения функции в заданных точках.

Остальные параметры имеют тот же смысл, что и аналогичные параметры подпрограммы FORIT.

Использование разложения функции в ряд Фурье как фильтра иллюстрируется на рис.5.5, где показана исходная функция, поме­ченная маркером “+” на нижнем рисунке, и приближение, полученное при разложении в ряд Фурье. Hа рисунках указано число M - коли­чество гармоник в разложении.


Рис.5.5. Пример, иллюстрирующий использование разложения в ряд Фурье как фильтра.

Hиже приводится программа, с помощью которой получен график, изображенный в нижней части рис.5.5 (M = 50)

     DIMENSION X(140),Y(140),A(100),B(100)
     READ 1,Y
 1   FORMAT(7F10.3)
     X(1)=0.
     DO 2 I=1,137
 2   X(I+1)=X(I)+.1
     CALL PAGE(17.,25.5,0,0,0)
     CALL MINMAX(Y,137,YN,YX)
     CALL LIMITS(0.,X(137),YN,YX)
     CALL REGION(1.,.5,15.,7.5,0,0,0)
     CALL LINEMO(X,Y,137,1,-1)
     CALL FORIT(Y,68,50,A,B,IER)
     CALL FORFIT(50,A,B,0.,X(137),150)
     CALL ITALIC(1)
     CALL SYMBOL(3.2,7.3,.5,'M=50',4,0)
     CALL AXES(0,0,0.,5,0,0,200.,5,0)
     CALL ENDPG('5.5')
     END