Produsul matrice cu vector se realizează dacă și numai dacă numărul de coloane ale matricei A este egal cu numărul de elemente ale vectorului X. Vectorul rezultat are un număr de elemente egal cu numărul de linii ale matricei A. Subprogramul seamănă foarte mult cu subprogramul de înmulțire a două matrice.
SUBROUTINE PROMAT (A,X,AX,M,N)
DO 20 I=1,M
DO 20 I=1,M
DO 20 J=1,N
CI=0.
DO 10 L=1,N
10 CI=CI+A(I,L)*B(L)
10 CI=CI+A(I,L)*B(L)
C(I)=CI
20 CONTINUE
RETURN
END
END
Având în vedere faptul că vectorul este socotit ca matrice cu o singură coloană, se apelează subprogramul de înmulțire a două matrice particularizat:
CALL PROMAT (A,X,AX,M,N,1)
dar ar trebui ca subprogramul de înmulțire a matricelor să fie un pic schimbat pentru ca structura repetitivă cu o singură iterație să nu se execute de M ori.
SUBROUTINE PROMAT (A,B,C,M,N,K)
DO 20 J=1,K
DO 20 I=1,M
DO 20 I=1,M
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
Cu această modificare instrucțiunea
DO 20 J=1,K
pentru k=1 se va executa o singură dată, ceea ce este ceva mai eficient.
(29 decembrie 2017)
No comments:
Post a Comment