Текст подпрограммы и версий pa08r_p.zip pa08e_p.zip |
Тексты тестовых примеров tpa08r_p.zip tpa08e_p.zip |
Определение узлов упорядоченной по возрастанию или по убыванию неравномерной сетки, между которыми лежит заданная точка, с использованием информации о ее предположительном местоположении.
Пусть заданы узлы сетки x1, x2,..., xN, упорядоченные либо по возрастанию, либо по убыванию. Подпрограмма PA08R по заданной точке X вычисляет методом бисекции значение индекса J, при котором точка X лежит между узлами xJ и xJ + 1 , с использованием значения индекса JL, определяющим ее предположительное местоположение.
Если J = 0, то это означает, что точка X лежит левее узла x1. Если J = N, то это означает, что точка X лежит правее узла xN .
procedure PA08R(var XX :Array of Real; N :Integer; X :Real; var JL :Integer; var J :Integer);
Параметры
XX - | вещественный вектор длины N, содержащий узлы заданной сетки x1, x2,..., xN упорядоченной либо по возрастанию, либо по убыванию; |
N - | количество узлов сетки (тип: целый); |
X - | заданная точка, местоположение которой ищется по отношению к узлам сетки (тип: вещественный); |
JL - | значение индекса, определяющего предположительное положение точки X по отношению к узлам сетки (тип: целый); |
J - | целая переменная, значение которой полагается равной индексу, при котором точка X лежит между узлами XX (J) и XX (J + 1). |
Версии
PA08E - | определение узлов упорядоченной по возрастанию или убыванию неравномерной сетки, между которыми лежит заданная точка, с использованием информации о ее предположительном местоположении в режиме расширенной (Extended) точности. При этом параметры XX и X должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TPA08R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, PA08R_p; function TPA08R: String; implementation function TPA08R: String; var N,I,JL,J :Integer; R,X :Real; ХХ :Array [0..19] of Real; label _1; begin Result := ''; N := 20; R := 0.0; for I:=1 to N do begin XX[I-1] := R; _1: R := R+0.2; end; X := 1.7; JL := 15; PA08R(XX,N,X,JL,J); Result := Result + Format('%15.5f %15.5f %5d %5d ',[X,XX[J-1],JL,J]) + #$0D#$0A; UtRes('TPA08R',Result); { вывод результатов в файл TPA08R.res } exit; end; end. Результат: J = 9