|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/av_htm_p/av19r_p.htm
Дата изменения: Fri Dec 4 13:05:52 2015 Дата индексирования: Sun Apr 10 02:32:21 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий av19r_p.zip av19e_p.zip av19c_p.zip |
Тексты тестовых примеров tav19r_p.zip tav19e_p.zip tav19c_p.zip |
Применение плоского вращения Гивенса.
Для двух заданных вещественных векторов Х и 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 )