|
Текст подпрограммы и версий av02r_p.zip av02e_p.zip av02c_p.zip |
Тексты тестовых примеров tav02r_p.zip tav02e_p.zip tav02c_p.zip |
Вычисление евклидовой нормы вектора.
Для заданного вектора А длины N вычисляется евклидова норма
|| A ||E = ( | a1 |2 + | a2 |2 + ... + | aN |2 )1/2
function AV02R(var A :Array of Real; N :Integer): Real;
Параметры
| A - | одномерный массив длины N, в котором задается исходный вектор (тип: вещественный); |
| N - | размерность вектора А (тип: целый). |
Версии
| AV02E - | вычисление евклидовой нормы вектора с расширенной (Extended) точностью. |
| AV02C - | вычисление евклидовой нормы комплексного вектора. |
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
В функции АV02E параметр А имеет тип Extended. | |
| 2. |
В функции АV02С параметр А имеет тип Complex. | |
| 3. | Функция АV02R и ее версии могут быть использованы для вычисления евклидовой нормы матрицы (см. пример 2). |
1.
Unit tAv02r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV02R_p;
function tAv02r: String;
implementation
function tAv02r: String;
var
_i,N :Integer;
Z :Real;
const
A :Array [0..4] of Real = ( 1.0,1.0,2.0,3.0,1.0 );
begin
ReSULt := '';
Result := Result + Format('%s',[' A']);
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
begin
Result := Result + Format('%20.16f ',[A[_i]]);
if ( ((_i+1) mod 5)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
N := 5;
Z := AV02R(A,N);
Result := Result + Format('%s',[' Z=']);
Result := Result + Format('%20.16f',[Z]);
UtRes('tAv02r',Result); { вывод результатов в файл tAv02r.res }
exit;
end;
end.
Результат: Z = 4.
2.
.
.
var
N,N1 :Integer;
Z :Real;
const
A :Array [0..8] of Real = ( 1.0,1.0,1.0,2.0,2.0,2.0,3.0,3.0,3.0 );
begin
.
.
N := 3;
N1 := N*N;
Z := AV02R (A, N1);
.
.
end;
Результат: Z = 6.48