Главная Промышленная автоматика. a:=b:=0; . ; if x=0 Л У-0 then go to fin; pi:==3.14159265359; . . , phi:=if x=0 then 0.5XpiXsign(y) eise arctan(y/x)+ (if x>0 then 0 else if yO then pi else-pi); r:=(xXx+yXy)t(w/2); a: = rXcos(wXphi); b:=rXsin(wXphi); fin: end powc; Свидетельство к алгоритму 1066 Алгоритм 1066 получен из алгоритма 106а путем исправления двух очевидных опечаток (в двух числах 3.14159265359 и 0.5 вместо точек были запятые), указанных в «Замечании» В. Я. Андерсона [26]. Свидетельство к алгоритму 106а Алгоритм 106а получен в результате исправления, сокращения и ординарной переработки алгоритма 106 (Johnson М. L., Sangren W. «САСМ», 1962, № 7). Были внесены четыре поправки, указанные в «Замечании к алгоритму 106» (Erwin G. W. «САСМ», 1962, Л-о 11). Алгоритм 106а транслирован при w-3 и следующих значениях остальных параметров: Входные данные Результаты 1. x+tV=3i; я=-0.168947736X10-•; 6=-27. 2. x,+iy=-3i; я=-0.168947736Х10-»; 6=27. 3. x-bi>=4+3t; я=-44; 6=117. 4. x-f-t>=4-3t; я=-44; 6=-117. 5. x+iy=-1+3i; я=44; 6=116. 999999. 6. x+iy=-i-3i; я=44; 6=-116. 999999. Результаты трансляции совпадают с результатами ручного счета, кроме случаев 1 и 2, где а должно быть равным нулю. Ошибка возникает из-за погрешности вычисления е и 1пх по стандартным программам. Свидетельство к алгоритму 1076 [F4] Алгоритм 1076 не публикуется здесь потому, что соответствующий алгоритм 107 (Counts J. W. «САСМ», 1972, № 7) был позже заме нен алгоритмом 126 (Counts J. W. «САСМ», 1962, № 10). АЛГОРИТМ 1086 Определенные экспоненцивльные интегралы Л [S13] Обращение к процедуре-функции as{n,b) дает значение интеграла Ь) = л"-Хехр(-6л;)с?л для любого положительного целого п й любого положительного вещественного параметра b по рекуррентной формуле An{\,b)=Ao{\,b) + {njb)An-i{\,b), где Ло(1,Ь)=ехр(-Ь)/Ь. real procedure as (п,Ь); value n,b; real b; integer n; begin real a,al,db; integer m; db:=l/b; a:=al:=dbXexp(-b); for m:=2 step 1 until n do a:=al + dbX(m-1) Xa; as:=a end as; Свидетельство к алгоритму 1086 Алгоритм 1086 является стереотипным переизданием алгоритма 108а. Свидетельство к алгоритму 108а Алгоритм 108а получен в результате сокращения, оптимизации й ординарной переработки алгоритма 108 (Кругляк Ю. А., Whitman D. R. «САСМ», 1962, № 7). Оптимизация состояла в замене массива а[1:л] простыми переменными а и al. Алгоритм проверен с помощью транслятора ТА-1 с исходными данными из «Подтверждения к алгоритму 108», приведенного ниже. Значение п было взято от 1 до 9 включительно. Результаты совпадают с указанными в «Подтверждении» не менее чем в семи значащих цифрах. Подтверждение к алгоритму 108 Ю. А. Кругляк, Д. Уитмен (KruglyakY. А., Whitman D. R. «САСМ», 1962, № 7) Интегралы Л„(1, Ь)- л"ехр(-bx)dx встречаются в задачах физи- ки, в которых используются сфероидальные бицентрические координаты, в частности в квантовохимических расчетах. Таблица 2 6=0.25 6=24.0 Алгоритм 108 По даЕ1ным Миллера и др. Алгоритм 108 По данным Миллера и др. 0.3II52031X10 0.15576015X10» 0.12772332X103 0.153S79S0XI04 0.24575835X10= 0.49151976X10= 0.11796476X108 0.33030132X10» 0.10569642X10" O.380507I1XI0" 0.I52202S4XI0" 0.66969248X10= 0.32145238X10" 0.167IS523XI0»* 0.93606928X10=» 0.S6164IS6X10"" 0.31152031322856X10 0.15576015661428X10» 0.12772332842371X10» 0.I535795I442I68XI0* 0.24575837510601X10= 0.49151986541516X10» 0. И 7964798 85167X10» 0.33030143989988X10» 0.10569646079911X10" 0.38050725887992Х Ш" 0.15220290355200X10" 0.66969277Б62880Х105 0.32145253230182X10" 0.16715531679695X10» 0.93606977406291X10»» 0.56164186443775X10»» 0.15729727X10-" 0.Ш385132Х10-" 0.17095I54X10-" 0.17866621XIO-" 0.18707497X10-" 0.19627122XI0-" 0.20636507X10-" 0.2I748707XI0-" 0.22979295Х10-" 0.24346962X10-" 0.25874294XI0-" 0.27588778XI0-" 0.29524115X10-" 0.3172I955XI0-" O.34234200XI0-" 0.37I26I02X10-" 0.15729727267830X10-" 0.16385132570656XI0-": O.I70951549S205IXIO-" 0.1786662I640586XIO-" 0.18707497Б41261Х10-" 0.19627122588926X Ш-и 0.20636507915061Х10-" 0.21748708743056X10-" 0.22979е96848848Х10-и 0.24346933586I48XI0-" 0.25874295428724X10-» 0.27588779339328XI0-" 0.29524U 6937494XI0-" 0.3I72I957275639XI0-" 0.34234205345285X10-" 0.37126I03733633X10-" Алгоритм был запрограммирован для вычислительной машины Burroughs 220, использующей транслятор Burroughs Algebraic Compiler. Программа была использована для вычисления значений An-iil,b) при л=1, 2, 16 и Ь=0.01, 0.02, 30.14. Например, для п-1, 2, .... 16; fc=0.25 и Ь=24 были получены результаты, приведенные в табл. 2. Они сравнивались с результатами (столбцы 3 и 5), приведенными в работе Миллера и др. [9i]. Во всем интервале точность, не менее шести значащих цифр. Такая точность вполне достаточна для . квантовохимических расчетов. АЛГОРИТМ 1096 Определенные экспоненциальные интегралы В [SIS] Обращение к процедуре bs{n,a) дает значение интеграла n-j(«)= 1л:"-ехр(-ax)dx Л для любого положительного целого п и любого вещественного а. Если \a\<alim, то для вычисления Вп{а) используется разложение функции ехр(-ах), в противном случае -рекуррентная формула-В„(а)=[(-1)"е°-e-«-b«XBn-i(a)]/G, где Bo{a)=2sh{a) ja. Значение dettalOd равно модулю наибольшей возможной погрешности в значениях библиотечных процедур, а значение alim выбирается в зависимости от deltal09 и от максимального значения, которого достигает п при вычислениях. Например, можно взять alim=8 для Лтах=16 » deliam=lO- real procedure bs(n,a,alim,deltal09); value n,a,alim,deltal09; real a,alim,delta 109; integer n; begin real r,eps,s,k,a2,da,dr; integer m; if a=0 then begin bs: = if n-f-2x2=n then 0 else 2/n; go to fin end; comment Предыдуший оператор вычисляет Bn i (0); if abs(a) <alim then begin a2:=af2; if п-г-2х2:?п then begin s:=r:=2/n; k:=0 end else begin s:=r:=2Xa/(n-H); k:=l end; eps:=abs (r X delta 109); iter: k:=k+2; r:=rXa2X (n-bk-2)/ (kX (k-1) X (n-f k)); s:=s-br; if abs (r)> eps then go to iter; bs:= if n-2X2=n then - (s-f r) else s-f r; go to fin end if abs; comment Предыдущие операторы вычисляют Bn-iCa) для a< <alim; da:=l/a; r:=exp(a); dr:=l/r; s:=(r-dr)Xda; k:=-1; 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 0.0017 |