Calcule matriceale (I)

Spuneam mai pe la început că limbajul PYTHON este deisebit de puternic prin bibliotecile de fuuncţii şi de metode pe care le are. Pentru calculele matriceale, dar şi pentru multe alte prelucrări sunt biblioteci extrem de bogate, pe care nu le întâlnim pe la alte limbaje şi care dacă sunt cunoscute foarte bine, vor conduce la creşterea spectaculoasă a productivităţii programatorilor prin reutilizare de cod, apelând acele metode şi funcţii, cu condiţia să fie cunoscute foarte bine listele de parametri şi ce returnează. Aici există diferenţă între înmulţirea romană a două matrice, C=A*B cu Cii = Aii * Bii şi produsul a două matrice , cu înmulţirea linie-coloană a celor două matrice. La fel şi în cazul extragerii rădăcinii pătrate.
Programul de mai jos exemplifică operaţii de calcul şi de prelucrare cu matrice.
#
#
#
# Calcule matriceale
#
#
import numpy
import math
# **************** definire cu initializare matrice
Matrice_A = numpy.array([[1, 2, 3],
                         [1, 2, 3],
                         [5, 7, 1]]) # matrice singulară
# ***************Calcul determinant
Determin_A = numpy.linalg.det(Matrice_A)
print ("Determinantul matricei A rotunjit este : ", round(Determin_A))
print ("Determinantul matricei A nerotunjit este : ", Determin_A)
Matrice_B = numpy.array([[1, 2, 3],
                         [4, 3, 7],
                         [5, 7, 1]]) # matrice nesingulară
Determin_B = numpy.linalg.det(Matrice_B)
print ("Determinantul matricei B rotunjit este : ", round(Determin_B))
print ("Determinantul matricei B nerotunjit este : ", Determin_B)
# ***************** Adunare matrice
Matrice_C = numpy.array([[-1, -2, -3],
                         [-4, -3, -7],
                         [-5, -7, -1]]) # matrice nesingulară
Matrice_ADD = numpy.add(Matrice_B,Matrice_C)
print ("Matricea rezultat din B+C este : \n", Matrice_ADD)
# *****************Scadere matrice
Matrice_DIF = numpy.subtract(Matrice_B,Matrice_C)
print ("Matricea rezultat din B-C este : \n", Matrice_DIF)
# ******************Inmultire romana matrice Cij=aIJ*Bij
E = numpy.array([[1, 0, 0],
                 [0, 1, 0],
                 [0, 0, 1]]) # matrice unitate
Matrice_ROM = (numpy.multiply(E,Matrice_B))
print ("Matricea rezultat din E*B este : \n", Matrice_ROM)
# ******************Inmultire romana matrice
E = numpy.array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]) # matrice unitate
Matrice_PROD = (numpy.dot(E,Matrice_B))
print ("Matricea rezultat din E*B este : \n", Matrice_PROD)
# ******************Inmultire romana matrice
E = numpy.array([[1, 0, 0],
                 [0, 1, 0],
                 [0, 0, 1]]) # matrice unitate
Matrice_PATRAT = (numpy.dot(Matrice_B,Matrice_B))
print ("Matricea rezultat din E*B este : \n", Matrice_PATRAT)
# ******************* Radacina romana patrata din matricea F
Matrice_PTROM = (numpy.multiply(Matrice_B,Matrice_B))
G = numpy.sqrt(Matrice_PTROM) # Gij=sqrt(Bij)
print ("Radacina patrata romana a matricei F este : \n", G)
# *********************** Inversarea Matrice_B
Matrice_INV = numpy.linalg.inv(Matrice_B)
print ("Matricea inversa este : \n", Matrice_INV)
# ************************ proba: matricea unitate = A * inersa(A)
Matricea_PROBA = numpy.dot(Matrice_B,Matrice_INV)
NR = len(Matricea_PROBA)
for i in range(NR):
    for j in range(NR):
       Matricea_PROBA[i][j] = round(Matricea_PROBA[i][j])
print ("Matricea inversa rotunjita este : \n", Matrice_INV)
print ("Matricea de verificare este : \n", Matricea_PROBA)




Determinantul matricei A rotunjit este : 0
Determinantul matricei A nerotunjit este : 0.0
Determinantul matricei B rotunjit este : 55
Determinantul matricei B nerotunjit este : 54.999999999999964
Matricea rezultat din B+C este :
[[0 0 0]
[0 0 0]
[0 0 0]]
Matricea rezultat din B-C este :
[[ 2 4 6]
[ 8 6 14]
[10 14 2]]
Matricea rezultat din E*B este :
[[1 0 0]
[0 3 0]
[0 0 1]]
Matricea rezultat din E*B este :
[[1 2 3]
[4 3 7]
[5 7 1]]
Matricea rezultat din E*B este :
[[24 29 20]
[51 66 40]
[38 38 65]]
Radacina patrata romana a matricei F este :
[[1. 2. 3.]
[4. 3. 7.]
[5. 7. 1.]]
Matricea inversa este :
[[-0.83636364 0.34545455 0.09090909]
[ 0.56363636 -0.25454545 0.09090909]
[ 0.23636364 0.05454545 -0.09090909]]
Matricea inversa rotunjita este :
[[-0.83636364 0.34545455 0.09090909]
[ 0.56363636 -0.25454545 0.09090909]
[ 0.23636364 0.05454545 -0.09090909]]
Matricea de verificare este :
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]


Urmează şi Calcule matriceale (II) unde sunt folosite metode mult mai sofisticate de prelucrare în interiorul matricelor.



(afişat azi 20 aprilie 2022 ora 00,30)
revenire


Rezultatele obţinute sunt: