zernew
C ZERNEW SOURCE CHAT 05/01/13 04:22:41 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) dimension coef(*) * coef(1),coef(2),...coef(m+1) sonrt les coef (reels) du polynome de * degré m .coef(1) est le terme constant * xr et xi sont les parties reelle et imaginaire d'une racine approchée * et on cherche la solution excate par un newton * en sortie xvr et xvi sont les parties reelle et imaginaire de la * solution eps=1.d-10 xvr=xr xvi=xi icou=0 1 continue icou=icou+1 * evaluation du polynome et de sa dérivée xpor=coef(1) xpoi=0.d0 xder=coef(2) xdei=0.d0 xpur=xvr xpui=xvi do 10 ll=1,m-1 xpor=xpor+xpur*coef(1+ll) xpoi=xpoi+xpui*coef(1+ll) xder=xder+xpur*coef(2+ll)*(ll+1) xdei=xdei+xpui*coef(2+ll)*(ll+1) xpurr = xpur*xvr-xpui*xvi xpuii=xpur*xvi+xpui*xvr xpur=xpurr xpui=xpuii 10 continue xpor=xpor+xpur*coef(1+m) xpoi=xpoi+xpui*coef(1+m) * write(6,*) 'xpor,xpoi,xder,xdei',xpor,xpoi,xder,xdei * recherche de xdr et xdi denom=xder*xder+xdei*xdei if(denom.eq.0.d0) then * write(6,*) 'dérivée nulle' kerre=22 return endif xdr=-(xpor*xder +xpoi*xdei)/denom xdi= (xpor*xdei-xpoi*xder)/denom xvr=xvr+xdr xvi = xvi+xdi xcomp=max(abs(xvr),abs(xvi))*eps * write(6,*) 'denom,xdr,xdi,xvr,xvi',denom,xdr,xdi,xvr,xvi if(abs(xdr).le.xcomp.and.abs(xdi).le.xcomp.and.icou.ge.4) $ go to 2 go to 1 2 continue * write(6,*) ' icou',icou return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales