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

Подпрограмма:  IA10R (модуль IA10R_p)

Назначение

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

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

Пусть задана действительная функция 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                           |