Текст подпрограммы и версий av13r_p.zip av13e_p.zip av13c_p.zip |
Тексты тестовых примеров tav13r_p.zip tav13e_p.zip tav13c_p.zip |
Умножение скаляра на вектор и сложение результата с другим вектором.
Подпрограмма 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