Текст подпрограммы и версий iah3r_p.zip , iah3e_p.zip |
Тексты тестовых примеров tiah3r_p.zip , tiah3e_p.zip |
Вычисление значения функции в заданной точке отрезка по известным коэффициентам ее разложения в ряд по многочленам Чебышева. на этом отрезке
Пусть известны коэффициенты cj разложения функции f (x) в ряд по многочленам Чебышева на отрезке [A, B]. Тогда подпрограмма IAH3R вычисляет значение этого разложения в точке x = X ∈ [A, B]:
N f (X) ≈ [ ∑ cjTj -1(Y) ] - c1/ 2 , j =1 где Y ≡ ( X - (B + A)/2 ) / ( (B - A)/2 ) .
Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1973.
procedure IAH3R(A :Real; B :Real; var C :Array of Real; N :Integer; X :Real; var RES :Real);
Параметры
A, B - | нижняя и верхняя границы отрезка, на котором задано разложение функции f (x) в ряд по многочленам Чебышева (тип: вещественный); |
C - | вещественный вектор длины N, содержащий известные значения коэффициентов разложения функции f (x) в ряд по многочленам Чебышева; |
N - | заданное количество членов ряда (тип: целый); |
X - | заданная точка отрезка [A, B], в которой вычисляется значение разложения функции f (x) в ряд по многочленам Чебышева (тип: вещественный); |
RES - | вещественная переменная, значение которой полагается равным вычисленному значению разложения функции f (x) в ряд по многочленам Чебышева в точке X. |
Версии
IAH3E - | вычисление значения функции в заданной точке отрезка по известным коэффициентам ее разложения в ряд по многочленам Чебышева на этом отрезке в режиме расширенной (Extended) точности; при этом параметры A, B, C, X и RES должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit tiah3r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, FIAH3R_p, IAH1R_p, IAH3R_p; function tiah3r: String; implementation function tiah3r: String; var N,_i :Integer; A,B,RES,RES1,X :Real; C :Array [0..9] of Real; RF :Array [0..9] of Real; begin Result := ''; { результат функции } N := 10; A := 0.0; B := 1.0; X := 0.5; IAH1R(A,B,C,N,FIAH3R,RF); Result := Result + #$0D#$0A; for _i:=0 to 9 do begin Result := Result + Format('%20.16f ',[C[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; IAH3R(A,B,C,N,X,RES); RES1 := Sin(X); Result := Result + Format(' %20.16f %20.16f ',[RES,RES1]) + #$0D#$0A; UtRes('tiah3r',Result); { вывод результатов в файл tiah3r.res } exit; end; end. Unit fiah3r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; function fiah3r(X :Real): Real; implementation function fiah3r(X :Real): Real; begin { Result - прототип имени функции FUNC на FORTRANe } Result := Sin(X); exit; end; end. Результат: RES = 0.479426