Текст подпрограммы и версий
iis2r_p.zip
Тексты тестовых примеров
tiis2r_p.zip

Подпрограмма:  IIS2R (модуль IIS2R_p)

Назначение

Вычисление значения кусочно - полиномиальной функции в заданной точке.

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

Пусть кусочно - полиномиальная функция задана следующим образом: на каждом полуинтервале (xk, xk + 1),  k = 0, 1, ..., N - 1, неравномерной сетки  x0 < x1 < x2 < ... < xN она является полиномом степени  M

     Ak1 (x - xk)M + Ak2 (x - xk)M - 1 + ... + Ak M (x - xk) + Ak M + 1 

с известными коэффициентами  Ak1, Ak2, ..., Ak M + 1. Подпрограмма вычисляет значения этой кусочно - полиномиальной функции в заданной точке  xt :  x0 < xt < xN.

Использование

procedure IIS2R(X0 :Real; N :Integer; var X :Array of Real;
                M :Integer; var A :Array of Real; var Y0 :Real;
                var IERR :Integer);

Параметры

XT - заданная точка  xt, в которой ищется значение кусочно - полиномиальной функции (тип: вещественный);
N - заданное число полуинтервалов,  N ≥ 2 (тип: целый);
X - вещественный одномерный массив размерности  N + 1, в котоpом заданы узлы сетки  xk;
M - заданная степень кусочно - полиномиальной функции (тип: целый);
A - вещественный двумерный массив размера  N * (M + 1), в котоpом задаются на соответствующих местах коэффициенты  Ai j кусочно - полиномиальной функции в порядке убывания степеней;
YT - вещественная переменная, содержащая вычисленное значение кусочно - полиномиальной функции в заданной точке  xt;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR=65 - когда заданное значение  XT не принадлежит полуинтервалу (x0, xN].

Версии: нет

Вызываемые подпрограммы

UTI I10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы I IS2R.

Замечания по использованию

  Коэффициенты кусочно - полиномиальной функции помещаются в матрице  A по столбцам.

Пример использования

На сетке  xk = (k - 1) * π / 4,   k = 1, ..., 5, заданы значения коэффициентов интерполяционного полинома.

Unit TIIS2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, IIS2R_p;

function TIIS2R: String;

implementation

function TIIS2R: String;
var
M,N,IERR :Integer;
YT :Real;
const
ХТ :Real = 0.134;
X :Array [0..4] of Real = ( 0.0,0.7854,1.5708,2.3562,3.1416 );
A :Array [0..23] of Real = ( 0.0115,0.0028,-0.0036,0.0004,-0.0075,0.0301,
0.0467,0.0167,-0.1624,-0.1152,-0.0026,0.122,0.0,
-0.355,-0.5005,-0.3512,1.0,0.7071,0.0,-0.7071,0.0,
0.7071,1.0,0.7071 );
begin
Result := '';  { результат функции }
N := 4;
M := 5;
IIS2R(XT,N,X,M,A,YT,IERR);
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%5d ',[IERR]) + #$0D#$0A;
Result := Result + Format('%s',[' YT=']);
Result := Result + Format('%20.16f ',[YT]) + #$0D#$0A;
UtRes('TIIS2R',Result);  { вывод результатов в файл TIIS2R.res }
exit;
end;

end.

Результат:    YT  =  0.1336