Текст подпрограммы и версий
av12r_p.zip  av12e_p.zip  av12c_p.zip 
Тексты тестовых примеров
tav12r_p.zip  tav12e_p.zip  tav12c_p.zip 

Функция:  AV12R (модуль AV12R_p)

Назначение

Вычисление евклидовой нормы вещественного вектора.

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

Функция AV12R вычисляет евклидову норму (длину)  n - мерного вектора по формуле:

     || X ||2 = ( | x1 |2 + | x2 |2 + ... + | xN |2 )1/2 ,

     где  X = ( x1, x2, ... , xN ) . 

Вектор X не обязательно должен занимать последовательные слова памяти машины и может располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметром приращения.

Этот параметр может быть меньше нуля, если обработка компонент вектора должна проводится в обратном порядке.

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

Для того, чтобы переполнение не возникало, проводится масштабирование по формуле:

     EVNORM = RNORM * ( (x12 + x22 +...+ xN2) / RNORM2 )1/2
  где    RNORM = 2lmax + 1 ,        lmax = log2AMAX ,
            AMAX = max ( | x1 |, | x2 |, ... ,| xn | ) ,

Масштабирование проводится в случае АМАХ > 1*106, когда возникает возможность переполнения.

Использование

function AV12R(N :Integer; var SX :Array of Real; INCX :Integer;
                var IERR :Integer): Real; 

Параметры

N - размерность вектора (тип: целый);
SX - вещественный одномерный массив длины N * | INСХ |, содержащий заданный вектор;
INCX - параметр приращения, задающий расположение вектора в массиве SХ (тип: целый);
IERR - целая переменная, указывающая характер ошибки; при этом:
IЕRR=65 - когда N ≤ 0 .

Версии

AV12E - вычисление евклидовой нормы вектора, заданного с расширенной (Extended) точностью.
AV12C - вычисление евклидовой нормы комплексного вектоpа.

Вызываемые подпрограммы

UTAV10 - подпрограмма выдачи диагностических сообщений при работе подпрограмм АV12R и АV12С.
UTAV11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы АV12E.

Замечания по использованию

 

В функции АV12E одномерный массив, содержащий вектор, обозначен DХ и имеет тип Extended.

В функции АV12С одномерный массив, содержащий вектор, обозначен СХ и имеет тип Complex.

Пример использования

Unit tAv12r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV12R_p;

function tAv12r: String;

implementation

function tAv12r: String;
var
N,INCX,IERR :Integer;
R12 :Real;
const
SX :Array [0..10] of Real = ( 2.0,0.0,2.0,0.0,2.0,0.0,2.0,0.0,2.0,0.0,2.0 );
begin
Result := '';
N := 6;
INСХ := 2;
IERR := 0;
R12 := AV12R(N,SX,INCX,IERR);
Result := Result + Format('%s',['    PEЗYЛЬTAT=']);
Result := Result + Format('%20.16f',[R12]) + #$0D#$0A;
Result := Result + Format('%s',['  IERR=']);
Result := Result + Format('%3d',[IERR]);
UtRes('tAv12r',Result);  { вывод результатов в файл tAv12r.res }
exit;
end;

end.

Результаты:    R12  =  4.898979 ,     IERR  =  0