- un subprogram CPYMAT de copiere de matrice;
- un subprogram PROMAT de înmulțire de matrice;
- subprogramul PUTERE de ridicare la putere matrice.
SUBROUTINE PROMAT (A,B,C,M,N,K)
DO 20 I=1,M
DO 20 I=1,M
DO 20 J=1,K
CIJ=0.
DO 10 L=1,N
10 CIJ=CIJ+A(I,L)*B(L,J)
10 CIJ=CIJ+A(I,L)*B(L,J)
C(I,J)=CIJ
20 CONTINUE
RETURN
END
END
SUBROUTINE CPYMAT(A,B,M,N)
MAXAIJ=A(1,1)
DO 10 I=1,M
DO 10 J=1,N
B(I,J)=A(I,J)
10 CONTINUE
RETURN
END
SUBROUTINE PUTERE(A,N,REZ)
DIMENSION TEMP(N,N)
CALL CPYMAT(A,TEMP,N,N)
DO 10 J=1,N-1
CALL PROMAT (A,TEMP,REZ,N,N,N)
CALL CPYMAT(TEMP,REZ,N,N)
10 CONTINUE
RETURN
END
Subprogramul PUTERE(....) are în el așa cum este scris niște asperități, dintre carea cea mai supărătoare este copierea de matrice de la ultima iterație care este nenecesară, dar care se gestionează cu o instrucțiune IF(...) dar a cărei execuție nu aduce un profit așa de mare decât numai dacă volumul de operații generat de dimensiunea matricei A este cu mult mai mare, lucru care se stabilește cu exactitate, dar care nu mi se pare a fi esențial pentru ceea ce mă interesează pe mine ca exemplificare.
(04 ianuarie 2018)
No comments:
Post a Comment