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

Алгоритм 1046 является стереотипным переизданием алгоритма 104а.

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

Алгоритм 104а получен в результате ординарной переработки алгоритма 104 (Rutishauser Н. «САСМ», 1962, №7).

Алгоритм 104а был транслирован с исходными данными п=4 и

0.00000000 0.43655745,<,-0.159392859 4.48979591

Получена следующая якобиева матрица:

1.0C0U0000 7.81024968 0.00000000

7.81024968 9.47540984 12.0601043

0.00000000 12.0601043 4.01438608

0.00000000 0.14551952,0-10 0.159392859

при этом использовалась процедура

procedure inform (n,j,d,s);

value n,j,d,s; real d,s; integer n,j; begin integer i,k; array u,cc[l:n,l:n]; for i:=l step 1 until n do for k:=I step 1 until n do u[i,k]:=if i=k then 1 else 0; u[jj]:-u[j-fl,j-bl]:=d; u+1] ••=s; u [] -Ы,j] :=-s; mult(aa,u,cc);

u[j + l.j]:=s; u[j,j-f 1]:=-s; mult(u,cc,aa) end inform;

в которой процедура mult (aa, и, cc) умножает матрицу aa[l: n ,1 : n] на матрицу u[l : n,l : n] и записывает результат в матрицу сс [I :п,1-.п]. Здесь массив аа первоначально содержит исходную ленточную матрицу, а и - элементарная матрица вращения, построенная согласно описанию алгоритма 104а.

АЛГОРИТМ «056

Метод Ньютона-Миели определения корней полинома [С2]

Эта процедура определяет все корни z[\:n] полинома р{х) - =а[0]Хх+ ... + а[п], если р{х) имеет только вещественные корни, причем все различные. Корни z [i] упорядочены по их величинам: 2[1] >2[2] >.. .>2[п]. Приближения для каждого корня уточняются



путем итерации, пока для двх последовательных приближений хО и х1 не перестанет выполняться соотношение abs{xl-xO)>epsXabs{xl).

procedure ne\vtonraaehly(a,n,eps) result: (z);

value Hjeps; real eps; integer n; array a,z; begin real aa,pp,qq,xO,xl; Integer i,rfi,s;

array b,p,q[0:n-l];

procedure horner (p,q,n,x) result: (pp,qq); value n,x; real x,pp5qq; integer n; array p,q; begin integer i; pp:=qq:=0;

for i:=0 step 1 uritil n-1 do

begin pp: = ppXx + p[i]; qq: = qqXx+Q[i] end i;

pp:=ppXx+p[n] end horner; P[0]:-aa:=a[0]; xO: = pp:=0; s: = sign{a[0]); for i:-1 step 1 until n do if sXa[ij<0 then begin if pp=0 then pp:=-i;

if xO<abs(a[i]) then xO:=abs(a[i]) end i;

xO:=if PP-0 then 0 else l+exp(ln(abs(xO/aa))/pp); comment xO - первое приближение для наибольшего корня. Оно может быть напечатано в этом месте программы; for i:=:0 step 1 until n-1 do b[i]:={n-i) Xa[i]; for rn:=l step 1 until n do

iter: begin horner (a,b,n,xO,pp,qq); xl:=xO-pp/qq;

!f abs(xi-xO) >epsXabs(xl} then begmxO: = xl;

comment xO - последнее приближение для корня, подлежащего уточнению. Оно может быть напечатано в этом месте; go to iter end if abs; z[m]:~xl;

pp:b[0]:=-b[0]-aa; q[0]:=pp; if m<n then begin

for i:=l step 1 until n-1 do

begin pp::=p[i]:xlXp[i-1] +a[i];

pp:=b[i]:=b[i]-pp;

q[i]:=xlXq[i-l]+pp end i;

horner(p,q,n-l,xl,pp,qq); xO:=xl-pp/qq;

comment xO -первое приближение для следующего корня; end if m

end m

end newtonmaehly;



Алгоритм 1056 получен из алгоритма 105а путем исправления в нем одной опечатки: на с. 12 в 10-й строке сверху [25] вместо eps должно было быть ехр. С этой поправкой алгоритм в настоящее время широко и зспешно используется во многих задачах в системе БЭСМ-АЛГОЛ.

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

Алгоритм 105а получен в результате исправления, некоторого сокращения и ординарной переработки алгоритма 105 (Bauer F. L., Stoer J. «САСМ», 1962, № 7). Кроме опечатки, заказанной в нижеследующем «Подтверждении», в алгоритме 105 были обнаружены круглые скобки у переменных a\t\ и ЬЩ в последнем операторе цикла.

Алгоритм 105а проверен с помощью транслятора ТА-1 для тех же двух полиномов, которые приведены в нижеследующем подтверждении Кондо.

1. хз-2x2-5х-Ьб, jjpjj gp5 Q-7 /2=3. Получен правильный результат 3=3, Х2=-2, Xi~l.

2. 15x4-f 85x3-225x2-b274x-120, eps=IQ-e, n=5. Получен правильный результат Х5=5, Х4=4, хз=3, Х2=2, Xi=l.

Подтверждение к алгоритму 105

Дж. Кондо (К on do J. «САСМ», 1963, № 7)

Алгоритм был успешно проверен на машине Burroughs 220 после следующей поправки:

for i:=0 step 1 until n-1 do b[i]:= (n-1) Xa[i]

заменено на

for i:=0 step 1 until n-1 do b[i] := (n-i) Xa[i].

С помощью этого алгоритма были проверены следующие полиномы с действительными корнями:

Полиномы eps Точность

х» 2х=-5x4-6 0.0000001 Ю"»

15x*-f85x-225x=-f274x-120 O.OOOGOl 10" =

АЛГОРИТМ 1066

Вещественная степень комплексного числа [В4]

Процедура powc {power - степень, complex - комплексный) вычисляет a + bi={x+yi). Нужно иметь в вид}, что если w=\jn, где п- целое, то процедура вычисляет корень л-й степени, но, возможно, не то его частное значение, которое желательно получить. Например, ш=г1 /3, х=-1, y=Q дает a=\j2, b=Y3/2, а не более простой корень а=-1, Ь=0. Алгоритм использует константу рг=я=3.14...

procedure powc(x,y,w)result: (a,b);

value x,y,w; real x,y,w,a,b; begin real pi,phi,r;





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