|
Текст подпрограммы и версий ias2r_p.zip |
Тексты тестовых примеров tias2r_p.zip |
Вычисление значения бикубического аппроксимирующего сплайна или его смешанных производных до третьего порядка при заданных значениях аргументов на заданных (возможно неравномерных) сетках при заданных коэффициентах.
B силу свойств бикубических сплайнов решение этой задачи приводится к решению пяти одномерных задач, решение которых изложено в описании подпрограммы - функции IAS1R.
Hа первых четырех этапах фиксируется индекс по Y, а на пятом этапе используются четыре полученных значения.
function IAS2R(var TX :Array of Real; NX :Integer;
var TY :Array of Real; NY :Integer;
var CXY :Array of Real; NCX :Integer; NCY :Integer;
IDX :Integer; IDY :Integer; XX :Real; YY :Real): Real;
Параметры
| TX - | вещественный вектоp длины NX + 4, содержащий значения узлов сетки сплайна по X; |
| NX - | заданное число узлов исходной сетки по X, NX ≥ 4 (тип: целый); |
| TY - | вещественный вектоp длины NY + 4, содержащий значения узлов сетки сплайна по Y; |
| NY - | заданное число узлов исходной сетки по Y, NY ≥ 4 (тип: целый); |
| CXY - | вещественный двумерный массив, содержащий значения коэффициентов сплайна, размерностью NCX * NCY; |
| NCX - | заданное число стpок массива CXY, NCX ≥ NX + 2 (тип: целый); |
| NCY - | заданное число столбцов массива CXY, NCY ≥ NY + 2 (тип: целый); |
| IDX - | заданный порядок вычисляемой производной по X, 0 ≤ IDX ≤ 3 (тип: целый); |
| IDY - | заданный порядок вычисляемой производной по Y, 0 ≤ IDY ≤ 3 (тип: целый); |
| XX - | заданное значение аргумента по X, при котоpом производятся вычисления, TX (3) ≤ XX ≤ TX (NX + 2) (тип: вещественный); |
| YY - | заданное значение аргумента по Y, при котоpом производятся вычисления, TY (3) ≤ YY ≤ TY (NY + 2) (тип: вещественный). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
|
Подпрограмма - функция использует рабочие подпрограммы-функции IAS1R1 и IAS1R2. Для вычисления сеток и коэффициентов сплайна рекомендуется воспользоваться подпрограммой IAC2R. |
Unit TIAS2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, IAC2R_p, IAS2R_p;
function TIAS2R: String;
implementation
function TIAS2R: String;
var
I,J :Integer;
S :Real;
FXY :Array [0..15] of Real;
ТХ :Array [0..7] of Real;
TY :Array [0..7] of Real;
CY :Array [0..7] of Real;
CXY :Array [0..63] of Real;
const
X :Array [0..3] of Real = ( 2.0,3.0,4.0,5.0 );
Y :Array [0..3] of Real = ( 2.0,3.0,5.0,6.0 );
FХА :Array [0..3] of Real = ( 24.0,36.0,60.0,72.0 );
FХВ :Array [0..3] of Real = ( 60.0,90.0,150.0,180.0 );
label
_10;
begin
Result := ''; { результат функции }
for I:=1 to 4 do
begin
for J:=1 to 4 do
begin
FXY[(I-1)+(J-1)*4] := Y[J-1]*(IntPower(X[I-1],3));
_10:
end;
end;
IAC2R(X,4,Y,4,FXY,4,4,1,1,1,FXA,2,FXB,
0,X,0,X,TX,TY,CXY,8,8,CY);
S := IAS2R(TX,4,TY,4,CXY,8,8,2,0,2.4,3.6);
Result := Result + Format('%s',[' PEЗYЛЬТАТ : S=']);
Result := Result + Format('%20.16f ',[S]) + #$0D#$0A;
UtRes('TIAS2R',Result); { вывод результатов в файл TIAS2R.res }
end;
end.
Результат: S = 51.840