Вторая пачка часть 243


.., 2N +1; N (тип in¬teger) - число, за¬дающее ко¬личество рав¬но¬от¬сто¬я¬щих узлов хi; М (тип in¬te¬ger) - ко¬ли¬чес¬тво вы¬чис¬ля¬е¬мых пар кэф¬фи¬циентов Фурье. Выходные: А (тип real) - массив из М + 1 чисел, со¬дер¬¬жа¬щий зна¬чения ко¬эф¬фи¬-циентов Фурь¬е а0 , а1 , ..., аm; В (тип real) - мас¬сив из М +1 ч謬¬сел, со¬держащий знବче¬ния ко¬-эф¬фи¬циентов Фурье b0 , b1 , ..., bm; IЕR (тип in¬te¬ger) - при¬знак ошиб¬ки во вход¬ных па¬ра-мет¬рах: IЕR = 0 нет ошиᬬки; IЕR = 1, если М > N; IЕR = 2, если М< 0. {ПОДПРОГРАММА ВЫЧИСЛЕНИЯ КОЭФФИЦИЕНТОВ ТРИГО¬НОМЕТРИЧЕСКОГО ИНТЕРПОЛЯЦИОННОГО МНОГОЧЛЕНА } PROCEDURE FORINT (FNT:MAS21;N,M:INTEGER; VAR A,B:MAS; VAR IER : INTEGER); LABEL 70,100; VAR I, AN, J : INTEGER; DN : BOOLEAN; Q,CONS,COEF,S1,S,C1,C,FNTZ, U0,U1,U2: REAL; BEGIN IER := 0; IF M<0 THEN BEGIN IER := 2; EXIT; END; IF M-N>0 THEN BEGIN IER := 1; EXIT; END; AN := N; COEF := 2.0 / (2.0*AN+1.0); DN := FALSE; CONS := 3.14159265*COEF; S1 := SIN (CONS); C1 := COS (CONS); C := 1.0; S := 0.0; J := 1; FNTZ := FNT[1]; REPEAT U2 := 0.0; U1 := 0.0; I := 2*N + 1; REPEAT U0 := FNT [I] + 2.0 *C*U1-U2; U2:= U1; U1 := U0; DEC (I); UNTIL I<=1; A[J] := COEF*(FNTZ+C*U1-U2); B[J] := COEF*S*U1; IF J>=(M+1) THEN DN := TRUE ELSE BEGIN Q := C1*C-S1*S; S := C1*S + S1*C; C := Q; INC (J); END; UNTIL DN; A[1] := A[1]/2.0; END. Интересно заметить, что с возрастанием m мнго¬член Рm(х) аппроксимирует функцию f(х) с воз¬рас¬та¬ю¬щей сте¬пенью точности, т.е. ошибка ин¬тер¬по¬ли¬рвания | f(х) - Рm (х) | 0 при m . Именно этим свойством тригонометрическая ин¬тер¬по¬ля¬ция отличается от полиноминальной, где при воз¬рас¬та¬нии степени полинома cам мно¬гчлен мо¬жет при¬ни-мать ка¬кие угодно большие знବче¬ния для всех точек x, кроме са¬мих узлов ин¬тер¬¬по¬ляции. Тригонометрическая интерполяция полностью св¬бод¬на от этого недостатка
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz