RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Puissance itérée inverse - fortran 77

Forum : FORTRAN
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ FORTRAN

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM FORTRAN

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
C a r o l i n e
Nouveau membre
Inscrit : 04/05/2009
Messages : 1
Message
#162716
Posté le 04/05/09 à 23:00
Bonjour,

J'ai essayé de programmer la méthode de la puissance itérée inverse comme suit :


program puissance_iteree_inverse implicit double precision (a-h,o-z) dimension a(1000,1000),b(1000),p(1000,1000) dimension x(1000),y(1000) c ------------------------------------------------------------------ c SAISIES c ------------------------------------------------------------------ c Saisie de la taille de la matrice write(*,*)"Saisissez la taille de la matrice :" read(*,*) m n=m*m c Saisie de la pr‚cision voulue write(*,*)"nSaisir la pr‚cision:" read(*,*) eps c ------------------------------------------------------------------ c ALGORITHME DE LA PUISSANCE ITEREE INVERSE c ------------------------------------------------------------------ n=3 do j=1,m do i=1,m a(i,j)=0.000001d0 enddo enddo do i=1,3 a(i,i)=i*1.d0 enddo do i=1,n x(i)=1.d0 enddo w=1.d0 ! lambda_anc z=0.d0 ! lambda cpt=0 call decomposition_A_LU(a,p,n) do j=1,15 c do while(abs(z-w).GT.eps) w=z call prod_scal(x,x,r,s,n) do i=1,n b(i)=(x(i)*1.d0)/s print *,b(i) enddo call descente_triangle(p,b,y,n) call remontee_triangle(a,y,x,n) call prod_scal(x,b,t,v,n) z=(1.d0)/t cpt=cpt+1 enddo c enddo write(*,*)"nLa valeur propre de plus petit module de A est :" print *,z write(*,*)"nLe nombre d'it‚rations pour cette pr‚cision est :" print *,cpt end c ------------------------------------------------------------------ c DECOMPOSITION A=LU c ------------------------------------------------------------------ subroutine decomposition_A_LU(a,p,n) implicit double precision (a-h,o-z) dimension a(1000,1000),p(1000,1000) c Algorithme de d‚composition A=LU c Au d‚but a=A A la fin P=L et a=U do k=1,n-1 do i=1,k-1 p(i,k)=0.d0 enddo p(k,k)=1.d0 do i=k+1,n p(i,k)=(a(i,k)*1.d0)/a(k,k) enddo do i=1,k do j=1,n a(i,j)=a(i,j) enddo enddo do i=k+1,n do j=1,k a(i,j)=0.d0 enddo enddo do i=k+1,n do j=k+1,n a(i,j)=a(i,j)-p(i,k)*a(k,j) enddo enddo enddo do i=1,n-1 p(i,n)=0.d0 enddo p(n,n)=1.d0 return end c ------------------------------------------------------------------ c DESCENTE TRIANGLE c ------------------------------------------------------------------ subroutine descente_triangle(p,b,y,n) implicit double precision (a-h,o-z) dimension p(1000,1000),b(1000),y(1000) y(1)=b(1); do i=2,n y(i)=(b(i)-p(i,i-1)*y(i-1)) enddo return end c ------------------------------------------------------------------ c REMONTEE TRIANGLE c ------------------------------------------------------------------ subroutine remontee_triangle(u,y,x,n) implicit double precision (a-h,o-z) dimension u(1000,1000),y(1000),x(1000) x(n)=(y(n)*1.d0)/u(n,n); do i=n-1,1 x(i)=((y(i)-u(i,i+1)*x(i+1))*(1.d0))/u(i,i) enddo return end c ------------------------------------------------------------------ c PRODUIT SCALAIRE ET NORME c ------------------------------------------------------------------ subroutine prod_scal(x,y,r,s,n) implicit double precision (a-h,o-z) dimension x(1000),y(1000) r=0.d0 do i=1,n r=r+x(i)*y(i) enddo s=dsqrt(r) return end


Pourtant ça ne marche pas et je ne sais pas pourquoi. J'ai utilisé l'algo que l'on peut retrouver notamment à cette adresse :
www-pequan.lip6.fr/~jmc/polycopies/cours5-puissanceiteree.pdf

Pourriez-vous m'aider ??
A bientôt et merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Yann Pingot et l'équipe MPWG avec www.evolvia-web.com :.