Главная Промышленная автоматика. Для проверки утверждения, что алгоритм работает фактически с точностью машины, он был переведен в команды двойной точности автокода Меркурий и пропущен на машине Атласе использованием транслятора EXCHLF Оконстаята была удлинена до 0.398942280401432677939946). Таблица 13
* Эти величины объясняются погрешностью вычитания, упомянутой в примечании к алгоритму. Изменение константы 2.32 на 1.28 приводит к величинам, указанным в скобках. (Прим. И. Хилла и С. Джойса). Результаты сравнивались с результатами ручного счета, причем использовалась таблица II работы В. Шеппарда [161]. Ошибки, замеченные в 22-й значащей цифре, приведены в табл. 14. Таблица 14
Хронометраж этого алгоритма был сделан в терминах «Instruction Count» машины Atlas при 100-кратном вычислении функции. Полученные цифры к другой машине не применимы, но отношения времен, вероятно, будут такими же и для других машин. Результаты хронометража всех вышеупомянутых алгоритмов приведены в табл. 15. Таблица 15 Номер алгоритма
а - вариант, соответствующий х>0иррег; 6 - вариант, соответствующий х>ОФиррег; е-.время для получения неверного решения. 120-кратный -просчет дал бы вместе со смежными значениями плавную кривую; г-100-кратное применение «Instruction Count» на одно вычисление. Заключение. Для концевых площадей функции нормального распределения целесообразно иметь два алгоритма. Один должен быть очень быстрым и достаточно точным, другой - очень точным и достаточно быстрым. Мы пришли к выводу, что алгоритм 209 является лучшим в смысле первого, а алгоритм 304 - лучшим в смысле второго требования. Алгоритмы 180 и 181 .работают быстрее алгоритма 304, и в этом смысле им может быть отдано предпочтение, но используемый в алгоритме 181 метод кажется не вполне точным, а допущение этого метода только в тех случаях, когда применим алгоритм 180, по-видимому, вряд ли рационально. Авторы данных «Замечаний» выражают благодарность мисс И. Аллен за помощь в выполнении ручных вычислений с двойной точностью. АЛГОРИТМ 1246 Функция Ханкеля [S17] Процедура hankel вычисляет комплексно определенную функцию Ханкеля Hn{x)=Jn{x) ±iNn{x) (см. [4, раздел 8.405]) от вещественного аргумента х и целого порядка пО и выдает ее компоненты в виде переменных (hi) и {h2). Ряды функций Бесселя (hi) и Неймана (/г2) не вычисляются по отдельности. Как вещественная, так и мнимая части образуются из одних и тех же членов. Буквой т обозначено максимальное число, представимое в данной машине и заменяющее оо. Здесь использована константа 2x=1.1544..., где С - постоянная Эйлера [4, с. 1094], и константа 1/я=0.318..., необходимая точность задания которых зависит от конкретной машины. procedure hankel(п,х,ш)result: (hl,h2); value п,х,ш; real x,m,hl,h2; integer n; begin real k,p,r,a,s,t,d,b; integer q; if x=0 then begin h2:=-m; hl:=if n=0 then ] else 0; go to exit end; a:=r:=l; hl:=h2:==s:=0; for q:=l step 1 until n do begin r:=rXq; s:=s+l/q end; d:= if n=0 then 0 else r/n; r:=l/r; k: = xXx/4; p:=kfn; t:=ln(k)+1.1544313298031; for q:=0,q + l vihile q<.nV b=H=h2 do • - • begin b:=h2; hl:=hl + aXr; -. h2:=h2+aX(rX(t-s) -(if q<n then d/p else 0)); a:=aXk/(q+l); r:=-г/(q + n+1); s:=s+l/(q+l) + l/(q + n+l); if q+l<n then d: = d/(n-q-1) end q; p:=(x/2)fn; hl:=hlXp; h2:=0.318309886184 Xh2Xp; exit: end hankel; Свидетельство к алгоритму 1246 Процедура hankel алгоритма 1246 отличается от соответствующе!! процедуры алгоритма 124а только тем, что ради удобства пользования глобальный идентификатор М в теле процедуры и в ее заголовке был заменен формальным параметром т. В пояснительном тексте были сделаны соответствующие изменения и некоторые дополнительные уточнения. Этот алгоритм сейчас широко используется в системе БЭСМ-АЛГОЛ. Свидетельство к алгоритму 124а Алгоритм 124а получен в результате сокращения и ординарной переработки процедуры, приведенной в «Подтверждении к алгоритму 124» (Reilly G. А. «САСМ», 1965, № 12). В вышеуказанной процедуре константа 2ХС была исправлена, и массив Я[1:2] для экономии машинного времени был заменен двумя простыми переменными hi и h2. Результаты трансляции алгоритма 124а приведены в табл. 16. Они полностью согласуются со значениями функций Бесселя и Неймана, приведенными в работе Е. Япке и др. [8]. Таблица 16
Подтверждение к алгоритму 124 Г. Райли (Reilly G. А. «САСМ», 1965, № 12) После изменений алгоритм был проверен на машине В-5000 с использованием языка ALGOL В-5000. Полученные результаты сверялись сданными справочника [15i]. Для п=0, 1, 2 и для д;<8 точность была до 10 десятичных цифр. Для 8<д;<17.5 точность ухудшалась до 6 десятичных цифр. Для 3«9 точность составляла до 5 десятичных табличных цифр. Для 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 |