Текст подпрограммы и версий ia10r_p.zip |
Тексты тестовых примеров tia10r_p.zip |
Вычисление сетки и коэффициентов кубического аппроксимирующего сплайна, приближающего заданную функцию или ее производную до второго порядка с заданной точностью.
Пусть задана действительная функция F (X), принадлежащая к классу 2*LX + 2 раз дифференцируемых функций, где LX порядок аппроксимирующей формулы; тогда по оценкам погрешности приближения, полученных в [1], строится оптимальная сетка сплайна из условия заданной точности.
Единственным требованием является то, что функция должна быть определена на большем отрезке, чем тот, на котоpом ищется оптимальная сетка.
Если заданная точность не достигается, выдается максимально допустимая равномерная сетка.
1. Завьялов Ю.С., Kвасов Б.И., Мирошниченко В.Л. Методы сплайн - функций. M.: Hаука, 1980.
procedure IA10R(FUNX :Func_F1; AX :Real; BX :Real; EPS :Real; LX :Integer; IDX :Integer; JX :Integer; NXM :Integer; var NX :Integer; var TX :Array of Real; var CX :Array of Real);
Параметры
XF - | имя вещественной подпрограммы - функции, вычисляющей значения аппроксимируемой функции; |
AX - | заданное число, начало отрезка (тип: вещественный); |
BX - | заданное число, конец отрезка, BX > AX (тип: вещественный); |
EPS - | заданное число, требуемая точность приближения, EPS ≥ 10 - 6 (тип: вещественный); |
LX - | заданное число, порядок аппроксимирующей формулы, 0 ≤ LX ≤ 1 (тип: целый); |
IDX - | заданное число, порядок приближаемой производной, 0 ≤ IDX ≤ LX + 1 (тип: целый); |
JX - | заданное число, признак формируемой сетки, 0 ≤ JX ≤ 1 (тип: целый); |
JX = 0 - равномерная сетка , JX = 1 - неравномерная сетка; |
NXM - | заданное число максимально допустимых узлов сетки, NXM ≥ 10 (тип: целый); |
NX - | целое значение числа узлов равномерной сетки, на котоpом получают оценки нужной производной, 6 ≤ NX ≤ NXM - 4 ; на выходе содержит значение оптимального числа узлов; |
TX - | вещественный вектоp длины NXM + 4, содержащий NX + 4 значений узлов вычисленной оптимальной сетки; |
CX - | вещественный вектоp длины NXM + 4, содержащий NX + 2 вычисленных значений коэффициентов сплайна. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
Подпрограмма использует рабочие подпрограммы - функции и подпрограммы IAC1R1, IA10R1 и IAS1R2. |
Unit TIA10R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, FIA10R_p, IA10R_p; function TIA10R: String; implementation function TIA10R: String; var NX,I :Integer; ТХ :Array [0..48] of Real; СХ :Array [0..48] of Real; begin Result := ''; { результат функции } NX := 41; IA10R(FIA10R,-1.0,1.0,0.0001,1,0,1,45,NX,TX,CX); Result := Result + #$0D#$0A; for I:=1 to 2 do begin Result := Result + Format(' ТХ :%20.16f ',[TX[I-1]]) + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for I:=1 to 2 do begin Result := Result + Format(' СХ :%20.16f ',[CX[I-1]]) + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TIA10R',Result); { вывод результатов в файл TIA10R.res } end; end. Результаты: | -1.1447 -1.0724 -1.0000 -0.9276 -0.8539 -0.7786 -0.7016 | TX = | -0.6225 -0.5410 -0.4566 -0.3686 -0.2757 -0.1759 -0.0641 | | 0.0744 0.1848 0.2840 0.3764 0.4640 0.5481 0.6294 | | 0.7083 0.7852 0.8603 0.9339 1.0000 1.0661 1.1322 | | -1.3966 -0.9825 -0.6709 -0.4410 -0.2759 -0.1621 -0.0876 | CX = | -0.0423 -0.0172 -0.0052 -0.0008 0.0001 0.0000 -0.0000 | | -0.0001 0.0010 0.0059 0.0184 0.0453 0.0928 0.1702 | | 0.2879 0.4581 0.6877 0.9854 1.3594 |