Текст подпрограммы и версий
av19r_p.zip  av19e_p.zip  av19c_p.zip 
Тексты тестовых примеров
tav19r_p.zip  tav19e_p.zip  tav19c_p.zip 

Подпрограмма:  AV19R (модуль AV19R_p)

Назначение

Применение плоского вращения Гивенса.

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

Для двух заданных вещественных векторов  Х и  Y размерности  N выполняется преобразование

     |   Xi   |                    |   Xi   |
     |         |    : =    A  *  |         | ,      i  =  1, ..., N   ,     где
     |   Yi   |                    |   Yi   |

                           |    G   S   |
                A   =   |               |   -   матрица вращения Гивенса.
                           |  - S   G   | 

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

Дж.Форсайт, М.Малькольм, К.Моулер. Машинные методы математических вычислений. М.: Мир, 1980.

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

procedure AV19R(N :Integer; var SX :Array of Real; INCX :Integer;
                var SY :Array of Real; INCY :Integer; G :Real;
                S :Real; var IERR :Integer);

Параметры

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

Версии

AV19E - применение плоского вращения Гивенса для вещественных  Х и  Y, заданных с расширенной (Extended) точностью.
AV19C - применение плоского вращения Гивенса для комплексных  Х и  Y.

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

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

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

  1. 

В подпрограмме АV19E параметры SХ, SY, G и S имеют тип Extended.

  2. 

В подпрограмме АV19С параметры SХ, SY, G и S имеют тип Complex.

  3.  Если вырабатывается значение IЕRR ≠ 0, то выдается соответствующее диагностическое сообщение и происходит выход из подпрограммы. Выход из подпрограммы происходит также в том случае, когда G = 1. и S = 0.

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

Unit TAV19R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AV19R_p;

function TAV19R: String;

implementation

function TAV19R: String;
var
N,J,INCX,INCY,IERR :Integer;
C,S :Real;
SX :Array [0..49] of Real;
SY :Array [0..49] of Real;
label
_3;
begin
Result := '';
N := 8;
for J:=1 to 50 do
 begin
  SX[J-1] := (J);
_3:
  SY[J-1] := (J);
 end;
C := 3.0;
S := 7.0;
INСХ := -7;
INCY := 4;
AV19R(N,SX,INCX,SY,INCY,C,S,IERR);
Result := Result + Format('%s',['   SX=']);
Result := Result + #$0D#$0A;
J := 1;
WHILE ( J<=50 ) do
 begin
  Result := Result + Format('%20.16f',[SX[J-1]]) + #$0D#$0A;
  inc(J,7);
 end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',['   SY=']);
Result := Result + #$0D#$0A;
J := 1;
WHILE ( J<=50 ) do
 begin
  Result := Result + Format('%20.16f',[SY[J-1]]) + #$0D#$0A;
  inc(J,4);
 end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',['   IERR=']);
Result := Result + Format('%3d',[IERR]) + #$0D#$0A;
UtRes('TAV19R',Result);  { вывод результатов в файл TAV19R.res }
exit;
end;

end.

Результаты:

     SX  =  ( 206., 199., 192., 185., 178., 171., 164., 157. )
                ( 8 элементов с интервалом 7 )

     SY  =  ( - 347, - 286., - 225., - 164., - 103., - 42., 19., 80. )
                ( 8 элементов с интервалом 4 )