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

АЛГОРИТМ 626

Поеледоватепьноеть присоединенных функций Лежандра второго рода [SI6]

Процедура legendr2 помещает последовательность значений Q™„ (л;) в массив q для целых значений п от О до птах для частного значения т и некоторого значения х, которое должно быть вещественным, если ri=:0, или чисто мнимым в противном случае. Массив г содержит ряд отношений последовательных значений q. Эти отношения могут быть особенно ценными, когда наименьшее Qnix) так мало, что выходит за пределы машинного представления чисел (например, lO-s когда наименьшее представимое в машине число равно 10-).

Выход, .к нелокализованной метке signal62 осуществляется, когда Qnix) теряет смысл (мнимые значения х пе могут быть отрицательными, а вещественные значения х не могут быть менее 1).

Значения Qn{x) могут быть легко вычислены с помощью гипергеометрических рядов (см. [1], с. 468), если х не слишком мало и (п-т) не слишком велико. Если же вещественное х близко к единице или мнимое X близко к нулю, то значения Q"n{x) получают по соответствующей последовательности значений Рп{х). Потеря значащих цифр случается для х таких малых как 1.1, если n>10. Потеря значащих цифр представляет большую трудность в использовании конечных полиномиальных представлений при п>т. Однако процедура legendr2 была проверена как для больших, так и для малых х и п. В процедуре legendr2 используется константа л;/2= 1.57 ...

procedure legendr2 (m,nmax,x,ri) result: (r,q);

value m,nmax,x,ri; real x; integer m,nmax,ri; array r,q; begin real t,qO,s; integer i,n;

n:= if nmax>13 then nmax+7 else 20;

if ri=0 then begin

if x= 1 then go to signa]62; if m-O then q[0]: = 0.5Xln((x-f l)/(x-1)) else begin qIO]: = t:=-l/sqrt(xXx-1); qO:=0; t: = 2XxXt; for i: = 2 step 1 until m do begin s:= (i-1) XtXq[0]-f- (3Xi-iXi-2) XqO;

q0: = q[0]; q[01:=:s end i end m;

r[n -t-1]: = x-sqrt (x X x- I);

Процедуры алгоритма 61а получены в результате сокращения и ординарной переработки соответствующих процедур алгоритма 61 (G i b b А. «САСМ», 1961, № 7). Процедуры rangpro, rangdiv и rangsqr, по существу, написаны заново.

Алгоритм проверен вручную для всех возможных сочетаний интервальных чисел.



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

Алгоритм 626 получен из алгоритма 62а путем, внесения в него следующих поправок:

1. На 32-й странице 3-я строка сверху [23] вместо

begin q[0]:=t: = l/sqrt(xXx-I);

должно быть

begin q[0]:=t: = l/sqrt(xXx+l);

2. Для ликвидации деления на нуль при п=т=х=0 оператор

if х==1 then go to signaI62;

был перенесен из 15-й строки процедуры legendr2 в ее 7-ю строку.

Алгоритм 626 был транслирован в системе ТА-1М для машины М-220. Результаты трансляции для п=0 сведены в табл. 4 и 5, а для ri-\-в табл. 6 и 7. Контрольные значения в табл. 4-7 взяты из сборника таблиц Колумбийского университета [32] (США).

Таблица 4

Результаты

Контрольные значения

Результаты

Контроль:1ые значения

0.67448734

0.674487

-0.17028090iol

-0.170281,о1

0.20707843

0.207078

-0.44193764

-0.441938

0.39720770,0-1

О.3972о810-1

-0.80402028,0-1

-0.804020,0-1

J0.0

О.зз5з477з10-2

0.335348,0-2

-0.67137103,0-2

-0.671371,0-2

r[i]:= (i+m)/((2Xi+1) Xx+ (m-i-1),Хт[1+1]); go to fin

end ri; if rn=0 then

q[0]: = if x<0.5 then arctan(x)-1.570796327 else-arctan(l/x else

begin q[0]:=t: = l/sqrt(xXx+l); qO:=0; t: = 2XxXt; for i:=2 step 1 unti! m do begin s:= (i-1) XtXq[0]+(3xi-biXi-2) XqO;

qO: = qlO]; q[0]: = s end i end m;

r[n+1]: = x-sqrt (x X x + 1 j;

for i:=n step -1 until 1 do

r[i]:=(i + m)/((i-m+l)Xr[i+l]-(2xi+l)Xx);

for i: = l step 2 until nmax do r[i]:=-r[i]; fin: for i: = l step 1 until nmax do q[i]: = q[i-1] Xr[i] end fegendr2;



Результаты

Контрольные значения

Результаты

Контрольные значение

0.24668237io-2

0.246682,0-2

0.11134250,о2

0.111343,о2

0.19107860,0-4

0.191079,0-4

0.62220398,0-1

0.622204,0-1

10.0

0.11732753,0-7

0.117328,0-7

0.35700357,0-4

0.357004,0-4

Таблица 6

Результаты

Контрольные значения

Результаты

Контрольные значения

-0.21460183

-0.214602

0.40361395

0.403614

-0.34478336,0-

-0.347483,0-1

0.68781292,0-1

0.687813,0-1

-0.13022200,0-

-0.130222,0-1

0.25943135,0-1

0.259431,0-1

Таблица 7

п=3; т=2

Результаты

Контрольные значения

-0.43805509

-0.438055

-0.12250521,0-1

-0.122505,0-1

-0.17352158,0-2

-0.173522,0-2

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

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

Кроме опечаток, указанных в нижеследующем замечании Дж. Херпдона («САСМ», 1961, № 12), в алгоритме 62 было исправлено следующее.

1. Параметры, т, птах, ri и переменные i, п были отнесены к типу integer.

2. Идентификатор log был заменен на In.

3. Оператор if х=\ then Q[0]:=9.9f45, где число 9.945 изображает «бесконечность», был заменен оператором





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.0036