Télécharger zroots.eso

Retour à la liste

Numérotation des lignes :

zroots
  1. C ZROOTS SOURCE CHAT 05/01/13 04:24:56 5004
  2. subroutine zroots (a,m,roots,ad,coef,racr,raci,kerre)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. dimension racr(*),raci(*),coef(*)
  6. complex a(*),roots(*)
  7. complex ad(*),x,b,c,xval
  8.  
  9. -INC PPARAM
  10. -INC CCOPTIO
  11. eps=1.e-7
  12. maxm=m+1
  13. do 1 j=1,m+1
  14. ad(j)=a(j)
  15. 1 continue
  16. * write(6,*) ' coef',(coef(i),i=1,17)
  17. j=m
  18. do 2 k=m,1,-1
  19. x = cmplx(0.,0.)
  20. * write(6,*) ' entree dans laguer'
  21. call laguer(ad,j,x,its,kerre)
  22.  
  23. if(kerre.ne.0) return
  24. * recherche de la valeur excate par newton et de la derivée
  25. * calcul de la valeur
  26. xr=real(x)
  27. xi= aimag(x)
  28. * write(6,*) ' sortie de laguer x ',x
  29. * write(6,*) ' appel a zernew'
  30. call zernew(xr,xi,coef,m,xvr,xvi,kerre)
  31. if(kerre.ne.0) return
  32. * write(6,*) ' sortie de zernew xvr xvi',xvr,xvi
  33. if(abs(xvi).le.2.*eps**2*abs(xvr)) xvi=0.d0
  34. x = cmplx(xvr,xvi)
  35. roots(j)=x
  36. racr(j)=xvr
  37. raci(j)=xvi
  38. b=ad(j+1)
  39. do 3 jj=j,1,-1
  40. c=ad(jj)
  41. ad(jj)=b
  42. b=x*b+c
  43. 3 continue
  44. if(abs(xvi).gt.2.*eps**2*abs(xvr))then
  45. * if(abs(xvi).gt.eps*abs(xvr))then
  46. * il existe surement la valeur complexe conjuguée
  47. j=j-1
  48. x=cmplx(real(x),-1.*aimag(x))
  49. roots(j)=x
  50. racr(j)=xvr
  51. raci(j)=-xvi
  52. b=ad(j+1)
  53. do 30 jj=j,1,-1
  54. c= ad(jj)
  55. ad(jj)=b
  56. b=x*b+c
  57. 30 continue
  58. endif
  59. j=j-1
  60. if(j.eq.0) go to 21
  61. 2 continue
  62. 21 continue
  63. return
  64. end
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales