Télécharger invalm.eso

Retour à la liste

Numérotation des lignes :

invalm
  1. C INVALM SOURCE PV 21/12/14 21:15:06 11221
  2. SUBROUTINE INVALM(D,LL,MM,KERRE,PREC)
  3. C
  4. C INVERSION D UNE MATRICE MM,MM CONTENUE DS UNE MATRICE LL,LL
  5. C CETTE MATRICE EST DANS LE COIN SUPERIEUR GAUCHE
  6. C
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8(A-H,O-Z)
  9. DIMENSION D(1)
  10. ** write(6,*) 'invalm entree ',ll,mm
  11. ** do i=1,mm
  12. ** write(6,*) (d((i-1)*ll+j),j=1,mm)
  13. ** enddo
  14. KERRE=0
  15. zprec=0.d0
  16. do i=1,mm
  17. do j=1,mm
  18. IJ=LL*(I-1)+J
  19. zprec=max(zprec,abs(d(ij)))
  20. enddo
  21. enddo
  22. zprec=zprec*prec
  23. DO 200 N=1,MM
  24. NN=LL*(N-1)+N
  25. DIAG=D(NN)
  26. IF(ABS(DIAG).LE.ZPREC) THEN
  27. ** write(6,*) ' invalm erreur ',NN
  28. KERRE=49
  29. RETURN
  30. ENDIF
  31. DIAG=1./DIAG
  32. DO 100 J=1,MM
  33. NJ=LL*(N-1)+J
  34. D(NJ)=-D(NJ)*DIAG
  35. 100 continue
  36. DO 150 I=1,MM
  37. IN=LL*(I-1)+N
  38. IF(I.EQ.N) GO TO 150
  39. DO 140 J=1,MM
  40. IF(J.EQ.N) GO TO 140
  41. NJ=LL*(N-1)+J
  42. IJ=LL*(I-1)+J
  43. D(IJ)=D(IJ)+D(IN)*D(NJ)
  44. 140 CONTINUE
  45. D(IN)=D(IN)*DIAG
  46. 150 continue
  47. D(NN)=DIAG
  48. 200 continue
  49. * write(6,*) 'invalm sortie ',ll,mm
  50. * do i=1,mm
  51. * write(6,*) (d((i-1)*ll+j),j=1,mm)
  52. * enddo
  53. RETURN
  54. END
  55.  
  56.  
  57.  

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