Текст подпрограммы и версий iis8r_p.zip , iis8e_p.zip |
Тексты тестовых примеров tiis8r_p.zip , tiis8e_p.zip |
Вычисление значения в заданной точке интерполируемой табличной функции, определенной в узлах неравномерной сетки, упорядоченной по возрастанию, по известным значениям ее второй производной в узлах этой сетки методом кубических сплайнов.
Пусть заданы узлы неравномерной сетки x1, x2, ..., xN, упорядоченные по возрастанию: x1 < x2 < ...< xN и значения y1, y2, ..., yN интерполируемой функции f (x) в узлах этой сетки. Пусть заданы также значения второй производной функции f (x) в тех же узлах. Подпрограмма I IS8R вычисляет значение Y функции f (x) в заданной точке X методом кубических сплайнов.
Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1973.
procedure IIS8R(var XA :Array of Real; var YA :Array of Real; var Y2A :Array of Real; N :Integer; X :Real; var Y :Real; var IERR :Integer);
Параметры
XA - | вещественный вектор длины N, содержащий узлы заданной сетки x1, x2, ..., xN, упорядоченные по возрастанию; |
YA - | вещественный вектор длины N, содержащий значения y1, y2, ..., yN интерполируемой функции в узлах заданной сетки; |
Y2A - | вещественный вектор длины N, содержащий значения второй производной интерполируемой функции в узлах заданной сетки; |
N - | количество узлов сетки (тип: целый); |
X - | заданная точка, в которой ищется значение интерполируемой функции (тип: вещественный); |
Y - | вещественная переменная, содержащая вычисленное значение интерполируемой функции в точке X; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом |
IERR=65 - | когда по крайней мере два узла сетки совпадают. |
Версии
I IS8E - | вычисление значения в заданной точке интерполируемой табличной функции,определенной в узлах неравномерной сетки, упорядоченной по возрастанию, по известным значениям ее второй производной в узлах этой сетки методом кубических сплайнов в режиме расширенной (Extended) точности. При этом параметры XA, YA, Y2A, X, и Y должны иметь тип Extended. |
Вызываемые подпрограммы
UTI I10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы I IS8R. |
UTI I11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы I IS8E. |
Замечания по использованию: нет
Unit TIIS8R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, IIS8R_p; function TIIS8R: String; implementation function TIIS8R: String; var N,I,IERR :Integer; R,X,Y :Real; ХА :Array [0..4] of Real; YA :Array [0..4] of Real; Y2A :Array [0..4] of Real; label _1; begin Result := ''; { результат функции } N := 5; R := 0.0; for I:=1 to N do begin XA[I-1] := R; YA[I-1] := Sin(XA[I-1]); Y2A[I-1] := -YA[I-1]; _1: R := R+0.2; end; X := 0.5; IIS8R(XA,YA,Y2A,N,X,Y,IERR); Result := Result + Format(' %20.16f %20.16f ',[X,Y]) + #$0D#$0A; Result := Result + Format('%5d ',[IERR]) + #$0D#$0A; UtRes('TIIS8R',Result); { вывод результатов в файл TIIS8R.res } exit; end; end. Результаты: Y = 0.47942 IERR = 0