-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathex1.py
More file actions
56 lines (40 loc) · 1.7 KB
/
ex1.py
File metadata and controls
56 lines (40 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#1) Verificați dacă inversa unei matrici triunghiulare este tot
#triunghiulară.
# IDE: https://trinket.io/embed/python3/a5bd54189b
import numpy as np
import sys
def cit_mat(n): #citirea matricei
mat = [] #inițializăm matricea
print("Introduceți valorile matricii!")
for linie in range(n):
print("Rândul: ", linie+1)
a = []
for col in range(n):
a.append(int(input()))
mat.append(a)
return mat
def ver_triung(mat): #verifică dacă matricea este triunghiulară superior
sf = True
sup = np.triu(mat, 1) #aflăm triunghiul de sub diagonale matricii
inf = np.tril(mat, -1) #aflăm triunghiul de deaspupra diagonaleo matricii
if np.count_nonzero(sup) != 0 and np.count_nonzero(inf) != 0: #verificăm dacă triunghiul de sub digonal este doar 0
sf = False
return sf
def inv_matrice(mat): #inversează matricea
return np.linalg.inv(mat)
if __name__ == "__main__":
n=int(input("Introduceți mărimea matricii: "))
if (n<=1) or not(isinstance(n, int)):
print("Mărimea matricii nu e validă. Trebuie să fie un număr natural, mai mare de 1.")
sys.exit(0)
mat = cit_mat(n)
print("\nMatricea este:\n", '\n'.join(['\t'.join([str(val) for val in linie]) for linie in mat]))
if not(ver_triung(mat)):
print("Matricea dată nu este triunghiulară!")
sys.exit(0)
invMat = inv_matrice(mat)
print("\nInversa matricii este:\n", '\n'.join(['\t'.join([str(round(val,2)) for val in linie]) for linie in inv_matrice(invMat)]))
if ver_triung(invMat) == True:
print("Matricea inversă este triunghiulară!")
else:
print("Matricea inversă nu este triunghiulară!")