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