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