![]() |
|
Главная Промышленная автоматика. •процедура 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
АЛГОРИТМ 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 |