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

Функция:  IAS1R (модуль IAS1R_p)

Назначение

Вычисления значения кубического аппроксимирующего сплайна или его производной до третьего порядка при заданном значении аргумента на заданной (возможно неравномерной) сетке сплайна при заданных коэффициентах.

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

Пусть заданы сетка сплайна  TX (I) ,  I = 1, ..., NX + 4 и его коэффициенты  CX (I),  I = 1, ..., NX + 2, где  NX - число узлов исходной сетки.

Для вычисления значения сплайна или его производной до третьего порядка при заданном аргументе  XX определяется номер интервала на массиве  TX такой, чтобы  XX принадлежал отрезку  [ТХ (IХ), ТХ (IХ + 1)] , где  3 ≤ IX ≤ NX + 1 .

Тогда из свойств локальных базисных сплайнов выводятся рекурентные формулы для вычисления производной порядка  IDX, где  0 ≤ IDX ≤ 3 :

     A(I) = CX(IX - 3 + I) ,   I = 1, ..., 4 ;

     A(I) = (4 - J) * ( A(I + 1) - A(I) ) / ( TX(IX + I) - TX(IX - 4 + I + J) ) ,
                I = 1, ..., 4-J ,   J = 1 ,..., IDX ;

     B(I) = TX(IX + I) - XX ,   I = 1, ..., 3-IDX ;

     C(I) = XX - TX(IX + 1 - I) ,   I = 1,..., 3-IDX ;

     A(I) = ( C(5 - I - J)*A(I + 1) + B(I)*A(I) ) / ( C(5 - I - J) + B(I) ) ,
                I = 1 ,..., 4-J ,   J = IDX + 1 ,..., 3 . 

После проведения этих вычислений значение содержится в  A (1).

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

function IAS1R(var TX :Array of Real; NX :Integer;
                var CX :Array of Real; IDX :Integer; XX :Real): Real;

Параметры

TX - вещественный вектоp длины NX + 4, содержащий значения узлов сетки сплайна;
NX - заданное число узлов исходной сетки,  NX ≥ 4 (тип: целый);
CX - вещественный вектоp длины  NX + 2, содержащий значения коэффициентов сплайна;
IDX - заданный порядок вычисляемой производной,  0 ≤ IDX ≤ 3 (тип: целый);
XX - заданное значение аргумента, при котоpом производятся вычисления,  TX (3) ≤ XX ≤ TX (NX + 2) (тип: вещественный).

Версии: нет

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

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

 

Подпрограмма - функция использует рабочие подпрограммы - функции IAS1R1 и IAS1R2.

Для вычисления сетки и коэффициентов сплайна рекомендуется воспользоваться подпрограммой IAC1R.

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

Unit TIAS1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, IAC1R_p, IAS1R_p;

function TIAS1R: String;

implementation

function TIAS1R: String;
var
S :Real;
ТХ :Array [0..7] of Real;
СХ :Array [0..7] of Real;
const
X :Array [0..3] of Real = ( 2.0,3.0,4.0,5.0 );
FX :Array [0..3] of Real = ( 8.0,27.0,64.0,125.0 );
begin
Result := '';  { результат функции }
IAC1R(X,4,FX,1,1,12.0,2,30.0,TX,CX);
S := IAS1R(TX,4,CX,1,2.4);
Result := Result + Format('%s',[' PEЗYЛЬТАТ :   S=']);
Result := Result + Format('%20.16f ',[S]) + #$0D#$0A;
UtRes('TIAS1R',Result);  { вывод результатов в файл TIAS1R.res }
end;

end.

Результат:    S  =  17.280