|
Текст подпрограммы и версий av16r_p.zip av16e_p.zip av16c_p.zip |
Тексты тестовых примеров tav16r_p.zip tav16e_p.zip tav16c_p.zip |
Вычисление суммы модулей компонент вектора.
Функция AV16R вычисляет сумму модулей компонент n - мерного вектора x = ( x1, x2, ..., xn ) по формуле:
N
S = ∑ | x i |
i =1
Вектор x не обязательно должен занимать последовательные слова памяти машины и может располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметром приращения. Этот параметр может быть меньше нуля, если обработка компонент вектора должна проводиться в обратном порядке.
В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 6.
function AV16R(N :Integer; var SX :Array of Real; INCX :Integer;
var IERR :Integer): Real;
Параметры
| N - | размерность вектора (тип: целый); |
| SX - | вещественный одномерный массив длины N, содержащий заданный вектор; |
| INCX - | параметр приращения, задающий расположение вектора в массиве SХ (тип: целый); |
| IERR - | целая переменная, указывающая характер ошибки; при этом: |
| IЕRR=65 - | когда N ≤ 0 . |
Версии
| AV16E - | вычисление суммы модулей компонент вектора, заданного с расширенной (Extended) точностью. |
| AV16C - | вычисление суммы модулей компонент комплексного вектора. |
Вызываемые подпрограммы
| UTAV10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АV16R и АV16С. |
| UTAV11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АV16E. |
Замечания по использованию
|
В функции АV16E одномерный массив, содержащий вектор, обозначен DХ и имеет тип Extended. В функции АV16С одномерный массив, содержащий вектор, обозначен СХ и имеет тип Complex. В функции АV16С сумма модулей компонент вычисляется по формуле: N
W = ∑ [ | Re ( x i ) | + | Im ( x i ) | ]
i =1
|
Unit tAv16r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV16R_p;
function tAv16r: String;
implementation
function tAv16r: String;
var
N,INCX,IERR :Integer;
R16 :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;
R16 := AV16R(N,SX,INCX,IERR);
Result := Result + Format('%s',[' PEЗYЛЬTAT=']);
Result := Result + Format('%20.16f',[R16]) + #$0D#$0A;
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%3d',[IERR]);
UtRes('tAv16r',Result); { вывод результатов в файл tAv16r.res }
exit;
end;
end.
Результаты: R16 = 12. , IERR = 0