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


0*C[N]); FOR I := 1 TO NM1 DO BEGIN B[I] := (Y[I+1]-Y[I]) / D[I]-D[I]*(C[I+1]+2*C[I]); D[I] := (C[I+1]-C[I])/D[I]; C[I] := 3.0*C[I]; END; C[N] := 3*C[N]; D[N] := D[N-1]; END ELSE BEGIN B[1] := (Y[2]-Y[1])/(X[2]-X[1]); C[1] := 0; D[1] := 0; B[2] := B[1]; C[2] := 0; D[2] := 0; END; END. { *** ПОДПРОГРАММА ВЫЧИСЛЯЕТ ЗНАЧЕНИЕ *** ***КУБИЧЕСКОГО СПЛАЙНА ПО СХЕМЕ ГОРНЕРА*** } FUNCTION SEVAL (N:INTEGER; U:REAL; X,Y,B,C,D:MAS): REAL; LABEL 10,30; VAR I,J,K: INTEGER; DX: REAL; BEGIN I:= 1; IF I>= N THEN I:=1; IF U< X[I] THEN GOTO 10; IF U<= X[I+1] THEN GOTO 30; 10: I := 1; J := N+1; REPEAT K:=(I+J) DIV 2; IF U<X[K] THEN J:=K; IF U>=X[K] THEN I:=K; UNTIL J<=I+1; 30: DX := U-X[I]; SEVAL := Y[I] + DX*(B[I] + DX*(C[I] + DX*D[I])); END. Погрешность сплайн-интерполяции можно оце¬нить, поль¬зуясь методом, описанным в § 1. Для проверки программы использовались дан¬¬ные § 1 (табл. 2.1), варианты А и Б. Здесь опре¬де¬ля¬лось зна¬че¬ние функции в средней точке о¬трез¬ка [a, b] - Хs = (х3 + х4)*0,5. При этом пред-ва¬ри¬тель¬но вы¬¬пол¬ня¬¬лась сплайн-ин¬¬тер¬по¬ля¬ция по¬ли¬но¬мом треть¬ей ст嬬¬пени. Результат сра⬬ни-ва묬ся с пр謬бли¬жением фунꬬции по¬ли¬но¬мом Ла-гран¬¬¬жа (ал¬го¬ритм из § 1) для обо¬их ва¬ри¬ан¬тов. Заметим, что расчетных точек в примере (табл. 2.1) да¬но 6, а для построения сплайна необходимо только 4, по¬э¬то¬му для каждого варианта строились два сплайна - пер¬вый по точкам 1 - 4 и второй по точкам 2 - 6. Таким об-ра¬зом обеспечивалось перекрытие в две точки по цент¬ру от¬рез¬ка именно там, где за¬да¬ва¬лась точка Хs. Ис¬¬тин¬ное зна¬че¬ние Y определялось как сред¬нее между значениями функ¬ции, по¬-лученными по пер¬вому и вто¬рму сплайну. Точность вычислений задавалась 10-5. Интересно заметить, что сплайны (табл. 2.4) проходят блее глад¬ко по сравнению с полиномами пятой сте¬пе¬ни (табл. 2.1), что подтверждает тезис о не¬у¬стой¬чивости прцес¬са интерполирования по¬ли¬но¬ма¬ми высоких сте¬пе¬-ней
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz