(*$B- AUFG2.19*) PROGRAM komplexewurzeln; CONST nn = 50; TYPE komplex = RECORD re,im: real END; wurzeln = ARRAY[0..nn] OF komplex; VAR x,y: komplex; w: wurzeln; k,n:integer; (*$I topolar Algorithmus 2.3 *) PROCEDURE wurzel(n:integer; a:komplex; VAR w:wurzeln); VAR r,phi,zpin : real; k:integer; BEGIN zpin := 8*arctan(1)/n; topolar(a.re,a.im,r,phi); r:=exp(ln(r)/n); phi:=phi/n; FOR k:=0 TO n-1 DO BEGIN w[k].re:=r*cos(phi+k*zpin); w[k].im:=r*sin(phi+k*zpin) END END; PROCEDURE hochn(x:komplex; VAR y:komplex); VAR k:integer; (*$I mult Algorithmus 2.8 *) BEGIN y.re:=1; y.im:=0; FOR k:= 1 TO n DO mult(y,x,y) END; BEGIN REPEAT writeln('Berechnung der n komplexen Wurzeln von a'); writeln('n, Re(a) und Im(a) eingeben'); read(n,x.re,x.im); wurzel(n,x,w); FOR k:=0 TO n-1 DO BEGIN write(k:2,'.Wurzel =',w[k].re:10:7,' + I * ',w[k].im:10:7); write(' w**n = '); hochn(w[k],y); writeln(y.re:10:7,'+ I*',y.im:10:7); END; UNTIL eof END.