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