Текст подпрограммы и версий
iah3r_p.zip , iah3e_p.zip
Тексты тестовых примеров
tiah3r_p.zip , tiah3e_p.zip

Подпрограмма:  IAH3R (модуль IAH3R_p)

Назначение

Вычисление значения функции в заданной точке отрезка по известным коэффициентам ее разложения в ряд по многочленам Чебышева. на этом отрезке

Математическое описание

Пусть известны коэффициенты  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