Текст подпрограммы и версий
av13r_p.zip  av13e_p.zip  av13c_p.zip 
Тексты тестовых примеров
tav13r_p.zip  tav13e_p.zip  tav13c_p.zip 

Подпрограмма:  AV13R (модуль AV13R_p)

Назначение

Умножение скаляра на вектор и сложение результата с другим вектором.

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

Подпрограмма AV13R выполняет умножение скаляра на n - мерный вектор и прибавление к результату другого n - мерного вектора по формуле:

     A X + Y = (A x1 + y1 , A x2 + y2 , ... , A xn + yn) = Y 

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

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

В случае, когда параметры приращения равны 1, используется развернутый цикл с шагом 4.

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

procedure AV13R(N :Integer; SA :Real; var SX :Array of Real;
                INCX :Integer; var SY :Array of Real; INCY :Integer;
                var IERR :Integer);

Параметры

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

Версии

AV13E - векторы и скаляр заданы с расширенной (Extended) точностью.
AV13C - векторы и скаляр заданы комплексными числами.

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

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

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

 

В подпрограмме АV13E одномерные массивы, содержащие данные векторы и скаляр, обозначены DХ, DY и DА и имеют тип Extended.

В подпрограмме АV13С одномерные массивы, содержащие заданные векторы и скаляр обозначены СХ, СY и СА и имеют тип Complex.

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

Unit TAV13R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV13R_p;

function TAV13R: String;

implementation

function TAV13R: String;
var
N,INCX,INCY,IERR,J :Integer;
SA :Real;
const
SX :Array [0..6] of Real = ( 1.0,1.0,1.0,1.0,1.0,1.0,1.0 );
SY :Array [0..6] of Real = ( 2.0,2.0,2.0,2.0,2.0,2.0,2.0 );
begin
Result := '';
N := 4;
SA := 2.0;
INСХ := 2;
INCY := 2;
IERR := 0;
AV13R(N,SA,SX,INCX,SY,INCY,IERR);
Result := Result + Format('%s',['   SX=']);
Result := Result + #$0D#$0A;
for J:=1 to 7 do
begin
 Result := Result + Format('%20.16f ',[SX[J-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',['   SY=']);
Result := Result + #$0D#$0A;
for J:=1 to 7 do
begin
 Result := Result + Format('%20.16f ',[SY[J-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',['   IERR=']);
Result := Result + Format('%3d',[IERR]) + #$0D#$0A;
UtRes('TAV13R',Result);  { вывод результатов в файл TAV13R.res }
exit;
end;

end.

Результаты:    SY = (4., 2., 4., 2., 4., 2., 4.) , IERR  =  0