Текст подпрограммы и версий 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