|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/av_htm_p/av11r_p.htm
Дата изменения: Fri Dec 4 12:37:56 2015 Дата индексирования: Sun Apr 10 02:30:22 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий av11r_p.zip av11e_p.zip av11c_p.zip |
Тексты тестовых примеров tav11r_p.zip tav11e_p.zip tav11c_p.zip |
Вычисление скалярного произведения двух вещественных векторов.
AV11R вычисляет скалярное произведение двух n - мерных вещественных векторов
(X, Y) = x1 y1 + x2 y2 +...+ xn yn
где X = ( x1, x2, ... , xn ) , Y = ( y1, y2, ... , yn ) .
Векторы X и Y не обязательно должны занимать последовательные слова памяти машины и могут располагаться в памяти с некоторыми постоянными интервалами между компонентами, которые называются параметрами приращения.
Эти параметры могут быть меньше нуля, если обработка компонент вектора должна производиться в обратном порядке.
В случае когда параметры приращения равны 1, используется развернутый цикл с шагом 5.
function AV11R(N :Integer; var SX :Array of Real; INCX :Integer;
var SY :Array of Real; INCY :Integer;
var IERR :Integer): Real;
Параметры
| N - | размерность векторов (тип: целый); |
| SX, SY - | вещественные одномерные массивы длины N * | INСХ | и N * | INСY | соответственно, содержащие заданные векторы; |
|
INCX - INCY | параметры приращения, задающие расположение векторов в массивах SХ и SY соответственно (тип: целый); |
| IERR - | целая переменная, указывающая характер ошибки, при этом: |
| IЕRR=65 - | когда N ≤ 0; |
| IЕRR=66 - | когда в процессе счета произошло переполнение центрального процессора. |
Версии
| AV11E - | вычисление скалярного произведения вещественных векторов, заданных с расширенной (Extended) точностью. |
| AV11C - |
вычисление скалярного произведения комплексных
векторов по формуле: (X, Y) = x1 y*1 + x2 y*2 +... + xn y*n где " * " - знак комплексного сопряжения. |
Вызываемые подпрограммы
| UTAV10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АV11R и АV11С. |
| UTAV11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АV11E. |
Замечания по использованию
|
В функции АV11E одномерные массивы, содержащие заданные векторы, обозначены DХ и DY и имеют тип Extended. В функции АV11С одномерные массивы, содержащие заданные векторы, обозначены СХ и СY и имеют тип Complex. |
Unit tAv11r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV11R_p;
function tAv11r: String;
implementation
function tAv11r: String;
var
N,INCY,INCX,IERR :Integer;
R11 :Real;
const
SX :Array [0..10] of Real = ( 1.0,2.0,2.0,2.0,3.0,2.0,4.0,2.0,5.0,2.0,6.0 );
SY :Array [0..10] of Real = ( 1.0,2.0,2.0,2.0,3.0,2.0,4.0,2.0,5.0,2.0,6.0 );
begin
Result := '';
N := 6;
INCY := 2;
INСХ := 2;
R11 := AV11R(N,SX,INCX,SY,INCY,IERR);
Result := Result + Format('%s',[' PEЗYЛЬTAT=']);
Result := Result + Format('%20.16f',[R11]) + #$0D#$0A;
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%3d',[IERR]);
UtRes('tAv11r',Result); { вывод результатов в файл tAv11r.res }
exit;
end;
end.
Результаты: R11 = 91.0 , IERR = 0