8310
18-07-2007, 16:06
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:
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
Secondo voi può andar bene?A me non convince per nulla :D So che non è molto chiaro quello che ho scritto ma sono sfinito....:cry: Grazie anticipatamente dell'aiuto....
Dunque io ho codificato il tutto in questo modo:
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
Secondo voi può andar bene?A me non convince per nulla :D So che non è molto chiaro quello che ho scritto ma sono sfinito....:cry: Grazie anticipatamente dell'aiuto....