5.7. Aппроксимация функций ортогональными многочленами Чебышева

Для приближения непериодических функций используется орто­гональная система функ­ций – многочлены Чебышева, которые, в сущности, являются функциями Фурье cosnq, за­мас­ки­ро­ван­ны­ми простым преобразованием переменной q=arccosx. Tаким образом, Tn(x)=cos(narccosx). Mногочлены Чебышева связаны рекуррент­ным соотношением:

Tn+1(x)=2x Tn(x) – Tn–1(x).

причем T0(x)=1, T1(x)=x.

Приближающая функция ищется в виде суммы многочленов Чебыше­ва, т. е.

.     

(5.8)

Используя узловые точки многочленов, т. е. систему точек, на которой многочлены Че­бы­ше­ва ортогональны, получаем следующую формулу для вычисления коэффициентов ci:

.

(5.9)

Узловые точки многочленов распределены неравномерно (они сгущаются к концам интервала [-1,1]), а именно

 

(5.10)

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

Cледует заметить, что коэффициенты ci (см. (5.9)) не зависят от M, т. е. от количества многочленов, входящих в сумму (5.8). Этот факт используется в примере, который приводится вслед за описанием программы.

Программа CHENSP (YM, N, YH, K, C, M) позволяет вычислить коэффи­циенты при­бли­жа­ю­щей функции C (если N>0) и ее значения YH (если K>0) на множестве рав­но­от­сто­я­щих точек, используя орто­гональную систему функций - многочлены Че­бы­ше­ва. Eс­ли N=0, то значения YH вычисляются в предположении, что коэффициенты C вы­чис­ле­ны ра­нее (см. пример). Программа имеет следующие параметры:  

YM

вектор значений дискретной функции длины |N|;

YH

вектор значений приближающей функции длины |K|;

C

вектор коэффициентов приближающей функции длины |M|.

 

рис.5.7 изображена часть синусоиды, на которую наложен шум (Y=SIN(X)+RAND(-0.1, 0.1, 1937)), и приближение этой функции многочленами Чебышева (два случая: M=12 и M=6).

 

Рис.5.7. Пример, иллюстрирующий аппроксимацию функции мно­гочленами Че­бы­ше­ва.

 

      DIMENSIОN YM(100),YH(100),C(12) 
      KR=1937 
      XM=0. 
      YM(1)=RAND(-1.01,0.01,KR) 
      DО 1 I=2,100 
      XM=XM+0.0314159 
    1 YM(I)=SIN(XM)+RAND(-0.1,0.1,KR) 
      CALL CHENSP(YM,100,YH,100,C,12) 
      CALL PAGE(17.,26., '5.7',3,0) 
      CALL REGIОN(1.,1.,13.,10.,0,0,0) 
      CALL LIMITS(0.,3.3,-0.2,1.15) 
      CALL AXES('M=12',4,0.,0,0,0,0.,0,0) 
      CALL INCLIN(0.,0.0314159,0,YM,100,0,0) 
      CALL INCLIN(0.,0.0314159,0,YH,100,0,0) 
      CALL CHENSP(0.,0,YH,100,C,6) 
      CALL REGIОN(1.,13.,13.,10.,0,0,0) 
      CALL AXES('M=6',3,0.,0,0,0,0.,0,0) 
      CALL INCLIN(0.,0.0314159,0,YM,100,0,0) 
      CALL INCLIN(0.,0.0314159,0,YH,100,0,0) 
      CALL ENDPG(0) 
      END 

 

Функция RAND (A, B, KR) позволяет генерировать псевдослучай­ные числа с рав­но­мер­ным рас­пре­де­ле­ни­ем в интервале (A, B), где A<B. Функция имеет следующие па­ра­мет­ры:

A, B 

нижняя и верхняя границы интервала;

KR

целая переменная, принимающая значения в диапазоне от 1 до 67108863.

 

Перед первым обращением к функии RAND необходимо занести в KR нечетное число в указанных пределах. Значение KR не следует изменять между обращениями к функции.