Главная страница Алгоритмы [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] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] real procedure sphben(r,x); value r,x; real x; integer r; . begin real z,t,s; integer i; if x=0 then go to signal49; s:=-cos(x)/x; t: = sin(x)/x; for i:= 1 step 1 until r do begin z: = s; s: = sX (2Xi-l)/x-t; t:=z end; sphben: = s end sphben; Свидетельство к алгоритму 496 Алгоритм 496 получен из алгоритма 49а путем исправления в нем ошибки, указанной в нижеследующем «Заме-чанн1ькалгоритму 40а» В. Я. Андерсона (эта ошибка содержалась и в исходном алгоритме 49). Алгоритм 496 был транслирован на машине М-220 в системе ТА-1М и для г=Ч, 2, 3 и х=0.т, 0.1, 1,- 1.5, 5 дал результаты, которые совпали ic контрольными с точностью до одной единицы последней (восьмой) значащей цифры, выданной на печать. Контрольные данные брались из «Таблиц сферических функций Беоселя» [38] с учето;М соотношения [3, с. 203] В частности, .были получены следующие результаты: - 10000.499 для г = 1 и х=0.01, -100.49875 дляг=1 л: = 0.1, 0.18043836 для г=1 л: = 5, -3.60550176 для г = 2 х=:1, -3.7892735 для г = 3 л: =1.5. Свидетельство к алгоритму 49а Алгоритм 49а получен в результате исправления, сокращения и ординарной переработки алгоритма 49 (Herndon J. R. «САСМ», 1961,-№4). В алгоритме 49 были .сделаны следующие исправления: 1) в случае х==0 вместо присваивания функции Неймана значения 10" сделан переход к глобальной метке signaH9; 2) параметр цикла i и формальный парамет1р г были отнесены к типу integer; 3) переменная s была локализована в теле процедуры. Замечание к алгоритму 49а В. Я. Андерсон, Новосибирск, август 1968 Оператор s: = sX(2Xi-1)/(х-t); Юлжен быть заменен на оператор s: = sX(2xi-1)/х-t; Без этой поправки правильные (результаты получаются только при г=0. После внесения поправки будет выполняться функциональное уравнение W =Щ-Р i) - Лр-/И; {р +:о.5 = О- АЛГОРИТМ 506 Обращение конечного сегмента матрицы Гильберта[F1] Процедура invhilbert вычисляет элементы обращен-ого конечного сегмента порядка п матрицы Гильберта и запоминает их в массиве s. Матрица Гильберта имеет Влементы h[l, /] = l/(/ + /-1). Известно, что обусловлен-iocTb сегментов ухудшается с возрастанием их порядка, procedure invhilbert (n) result: (s); value n; integer n; array s; begin integer i,j,k; real w; w: = s[l,l]: = nXn; for i:=: 2 step 1 until n do * r w: = s[i,i]:=wX({n + i-l)X(n-i+l)/(i-l)t ; 2) 12; for i:= 1 step 1 until n-l do for j:= i + 1 step 1 until n do begin k:=i-l; s[i,j]:=-sIi,lc]X {n + k) X (n-1<)/1<2 end; for i:= 2 step 1 until n do for j:= 1 step 1 until i do slij]: = s0,i]: = s0,i]/(i+j-1) end invhilbert; Свидетельство к алгоритму 506 Алгоритм 506 является стереотипным переизлаи!ием алгоритма 50а. Алгоритм 506 был транслирован на машине М-220 в системе ТА-1М, и были повторены расчеты П. Наура, приведенные в нижеследующем его «Замечании и подтверждении к алгоритму 50». 1. Обращенная матрица порядка 4X4 отличалась от приведенной П. tfayp~offl~ лшпь последним элементом s[4,4], который получился равным 2800.0000 (выводились ,на печать лищь восемь из девяти значащих цифр результата). 2. Относительные ошибки в результатах решения для п=3, 6, 9, 12 находились так же, как и у П. Наура, и получились следующими (табл. 22). Таблица 22
При «=15 в машине М-220 возникло переполнение, поскольку наибольший элемент результата оказался больше 10 (максимального представимого числа в этой машине). Свидетельство к алгоритму 50а Алгоритм 50а получен в результате ординарной neipe-работки. процедуры invhilbert, приведенной в нижесле- [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] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] 0.0121 |