|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2002
Città: Palermo
Messaggi: 5266
|
[FORTRAN] E' giusto? (esame domani)
Salve a tutti, oggi ho provato a fare il seguente esercizio riguardante la codifica in linguaggio Fortran. L'esercizio è: "implementare in Fortran un algoritmo che data una matrice quadrata reale di ordine n, stampi una tabella in cui in ogni riga siano presenti l'elemento diagonale della riga I-esima della matrice e la somma dei valori assoluti degli elementi della stessa I-esima riga tranne l'elemento diagonale, ordinati in ordine crescente (nella prima riga la somma più elevata, nell'ultima la somma più piccola)" (il testo non era proprio così perchè si riferiva al teorema di Gershgorin, ho cercato di tradurlo
![]() Dunque io ho codificato il tutto in questo modo: Codice:
PROGRAM GERSHGORIN DIMENSION A(10,10), R(10) LOGICAL C WRITE(*,*)'Inserisci l'ordine della matrice:' READ(*,*)N DO I=1,N WRITE(*,*)'Inserisci la riga ', I ,' della matrice:' READ(*,*)(A(I,J),J=1,N) END DO DO I=1,N R(I)=0.0 DO 1 J=1,N IF J=I THEN GO TO 1 ELSE R(I)=R(I)+ABS(A(I,J)) END IF 1 CONTINUE END DO 5 C=.TRUE. DO I=1,N-1 IF (R(I).GT.R(I+1)) THEN B=R(I) R(I)=R(I+1) R(I+1)=B D=A(I,I) A(I,I)=A(I+1,I+1) A(I+1,I+1)=D C=.FALSE. END IF END DO IF (C) THEN WRITE(*,*)'Centro ', A(I,I) ,' raggio ', R(I) ELSE GO TO 5 STOP END ![]() ![]()
__________________
[ LE MIE TRATTATIVE (con più di 120 utenti) ] And God said: "∇•D=ρ ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xH=J+∂D/∂t". And there was light. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
fa cagher
![]()
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2002
Città: Palermo
Messaggi: 5266
|
Grazie dell'impressione...magari però mi saresti stato più di aiuto spiegandomi cosa non va e, se non va bene nulla, come si fa....idee per farlo diventare presentabile?Comunque, prima non l'avevo scritto, ma la parte certamente sbagliata è la fine...penso che già così possa andare meglio:
Codice:
PROGRAM GERSHGORIN DIMENSION A(10,10), R(10) LOGICAL C WRITE(*,*)'Inserisci l'ordine della matrice:' READ(*,*)N DO I=1,N WRITE(*,*)'Inserisci la riga ', I ,' della matrice:' READ(*,*)(A(I,J),J=1,N) END DO DO I=1,N R(I)=0.0 DO 1 J=1,N IF J=I THEN GO TO 1 ELSE R(I)=R(I)+ABS(A(I,J)) END IF 1 CONTINUE END DO 5 C=.TRUE. DO I=1,N-1 IF (R(I).GT.R(I+1)) THEN B=R(I) R(I)=R(I+1) R(I+1)=B D=A(I,I) A(I,I)=A(I+1,I+1) A(I+1,I+1)=D C=.FALSE. END IF END DO IF (.NOT.C) THEN GO TO 5 ELSE DO I=1,N WRITE(*,*)'Centro ', A(I,I) ,' raggio ', R(I) END DO END IF STOP END PPS: me ne frega nulla dei fronzoli tipo formattazione del testo e tabella carina...mi interessa solo la logica dell'algoritmo
__________________
[ LE MIE TRATTATIVE (con più di 120 utenti) ] And God said: "∇•D=ρ ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xH=J+∂D/∂t". And there was light. Ultima modifica di 8310 : 18-07-2007 alle 22:37. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2002
Città: Palermo
Messaggi: 5266
|
Grazie ma si può chiudere
![]() L'esame e andato, e alla grandeeeeee ![]() ![]() ![]() ![]()
__________________
[ LE MIE TRATTATIVE (con più di 120 utenti) ] And God said: "∇•D=ρ ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xH=J+∂D/∂t". And there was light. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:35.