Главная Промышленная автоматика.

•процедура testmatr ероверена «а ТА-1, и с точностью до восьми" десятичных разрядов получены следующие результаты. Для п-А

0.9 -0.2 -0.3 0.1 -0.2 0.6 -0.6 0.2 -0.3 -0.6 ОЛ 0.3

0.1 0.2 0.3 -0.1

Для контроля эта тест-матрица обращалась с помощью алгоритмов 58 и 66, в результате чего получилась матрица

10 0 1 0 10 2 0 0 13 12 3 4

что соответствует .пояснительному тексту к процедуре testmatr. Подтверждение к алгоритму 52

X. Е. Гильберт (Gilbert Н. Е. «САСМ», 1961, № 8)

Оператор c:==tX\t+\\)X{!t-\-t-б)/6; был заменен оператором с: = nX:(fi+l) X (n+fi-5)/6;, чтобы привести обращение к форме, указанной в описании алгоритма. Алгоритм был переведен яа язык ФОРТРАН и проверен в UCSD с помощью программы, вычисляющей собственные значения матриц, на вычислительной машвне CDC 1604. Для матрицы 20x20 собственные значения следуюшие:

1. 1.000000;

2. 1.000000:

19. 0.01636693;

20. -0.02493833. Подтверждение к алгоритму 52

Дж. Хилмор (Н i 11 m о г е J. S. «САСМ», 1962, № 8)

Алгоритм был исправлен согласно рекомендации X. Е. Гильберта (В его «Подтверждении» («САСМ», 1961, № 8) и затем успешно проверен «а машине National-Elliott 803, использующей транслятор с языка Эллиот-АЛ ГОЛ. Полученные матрицы были использованы для проверки процедуры GJR обращения матриц, приведенной X. Р. Шварцем в его статье «Введение в АЛГОЛ» («САСМ», 1962, № 2).

Замечание и подтверждение к алгоритму 52 П. Наур (Naur Р. «САСМ». 1963, № 1)

Кроме внесения поправок, указанных X. Е. Гильбертом («САСМ», 1961, № 8), алгоритм был упрощен путем применения одновременного присваивания и исключения локализованных переменных t я f. В результате алгоритм имеет вид ... *

Этот вариант алгоритма был успешно пропущен в системе G1R ALGOL вместе с процедурами INVERSION II и gjr (см. «Подтверж-

* Приводится новый вариант процедуры testmatr, соответствующий данному в алгоритме 52а. {Прим. ред.)



дение к алгоритму 120 [24]»). Из результатов, выданных процедурой INVERSION II видно, что определитель этих матриц задается выражением 6/fi(fi+l)(5-2fi), которое является также значением элемента а[п,п]. Для fi>3 наибольшим ио модулю элементом является а[1,1]= = \ + а[п,п].

Дополнительное замечание к алгоритму 52 П. Наур (N а иг Р. «САСМ», 1963, № 8)

Просматривая результаты отыскания собственных значений, я сделал вывод, что все, кроме двух, собственные значения тестчматриц равны единице, а два остальных задаются выражениями 6/(рХ(п+1)) и />/(пХ(5-2Xfi)), где p=3+srt((4Xfi-3) Х(п-1) ХЗ/(п+,1)).

Эти выражения были использованы для определения абсолютных погрешностей в собственных значениях, вычисляемых процедурой jacobu (алгоритм 85), с помощью алгоритма «Триангуляризация по Хаус-хольдеру» и т. д., как описано ниже. Они были использованы также для вычисления табл. 1 (применялась система GIER ALGOL с 29 значащими разрядами).

В табл. 1 цифры для п=20 хорошо согласуются с результатами, приведенными в «Подтверждении к алгоритму 52» X. Гильберта («САСМ», 1961, № 8).

Таблица i

Определитель

Собственные значения, отли-иые от 1

(n-l)-e

-0.50000000

0.22474487

-2.2247449

-0.10000000

0.15311289

-0.65311289

-0.040000000

0.11323808

-0.35323808

-0.020408163

0.088290570

-0.23114771

-0.011904762

0.071428571

-0.16666667

-0.0075757576

0.059386081

-0.12756790

-0.0051282052

0.050422549

-0.10170460

-0.0036363636

0.043532383

-0.083532383

-0.0026737968

0.038097478

-0.070183039

-0 0020242915

0.033718770

-0.060034559

-0.0015698587

0.030128103

-0.052106125

-0.0012422360

0.027139206

-0.045772747

-0.0010000000

0.024619013

-0.040619013

-0.00081699347

0.022470157

-0.036359046

-0.00067613252

0.020619902

-0.032790288

-0.00056593096

0.019012916

-0.029765605

-0.00047846890

0.017606429

-0.027175807

-0.00040816327

0.016366903

-0.024938332

АЛГОРИТМ 536

Извлечение корней п-й степени из комплексного числа [В4]

Процедура nroot (от root - корень) определяет п корней уравнения x=r+uXi. Действительные части запоминаются в векторе real. Мнимые части запоминаются в соответствующих местах вектора unreal.

procedure nroot (n,r,u) result: (real.unreal); . .

value n,r,u; real r,u; integer n; array real, unreal;



begin real c,m,pi,s,t; integer i;

m:=l/n; pi:=-3.14159265; s:=:(rxr-f uXu)t(m/2); t:= if r=0 then sign (u) Xpi/2 else

if r>0 then arctan (u/r) else arctan (u/r) +pi; t:=-mXt; c:=2XpiXm; for i: = } step I untii n do begin real[i]: = sXcos(t); unrealIi]:==sXsin(t); t:=t+c end i end nroot;

Свидетельство к алгоритму 536

Алгоритм 53б является стереотипным переизданием алгоритма 53а.

Свидетельство к алгоритму 53а

Алгоритм 53а получен в результате сокращения и ординарной переработки алгоритма 53 (Herndon J. R. «САСМ», 1961, № 4).

С помощью транслятора ТА-1 были извлечены корни 3-й и 5-й степеней из комплексных чисел 8-Ьбг и -8+6/. Результаты:

1. xA = 8+6i, и = 3;

х= 2.10506122 + 0.45859I405i-, X = - 1.44968241 -I- 1.59374079i, X = - 0.655378815 - 2.05233219г.

2. = - 8 + 6i, п = Ъ\

X = 1.44968242 + 1.59374079/,

X = - 2.10506122 + 0.458591412/, х= 0.655378793 - 2.05233220/.

3. х" = 8 + 6/, п = 5;

х= 1.57178541 +0.203413470/, х= 0.292250701 + 1.55771498/, X = - 1.39116454 + 0.759307336/, X = - 1.15203768 - 1.08843723г, х= 0.679166102- 1.43199854г.

4. хп= -8 +6г. и = 5;

х= 1.39116455 + 0.759307332/, X = - 0.292250696 + 1.55771498/, X = - 1.57178541 + 0.203413475/, х==-0.679166118 - 1.43199854/. X = 1.15203766 - 1.08843724/.

Эти результаты совпали шестью разрядами с результатами ручного счета.

Замечание к алгоритму 53

К. В. Нестор (Nestor С. W. «САСМ», 1961, № 7) Значительная экономия машинного времени для «>3 получилась





0 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

0.0017