Matrice nulla
def nulla(n):
m = []
for r in range(n):
riga = []
for c in range(n):
riga.append(0)
m.append(riga)
return m
def test_nulla(m):
n = len(m)
for r in range(n):
for c in range(n):
if(m[r][c] != 0):
return False
return True
Matrice identità
def identità(n):
m = []
for r in range(n):
riga = []
for c in range(n):
if(r == c):
riga.append(1)
else:
riga.append(0)
m.append(riga)
return m
def test_identità(m):
n = len(m)
for r in range(n):
for c in range(n):
if(r == c) and (m[r][c] != 1):
return False
if(r != c) and (m[r][c] != 0):
return False
return True
Matrice diagonale
Sulla diagonale principale carica numeri pseudocasuali in [0, 1)
def diagonale(n):
m = []
for r in range(n):
riga = []
for c in range(n):
if(r == c):
riga.append(random.random())
else:
riga.append(0)
m.append(riga)
return m
def test_diagonale(m):
n = len(m)
for r in range(n):
for c in range(n):
if(r != c) and (m[r][c] != 0):
return False
return True
Matrice triangolare superiore
Carica numeri pseudocasuali in [0, 1)
def triangolare_sup(n):
m = []
for r in range(n):
riga = []
for c in range(n):
if(r <= c):
riga.append(random.random())
else:
riga.append(0)
m.append(riga)
return m
def test_triangolare_sup(m):
n = len(m)
for r in range(n):
for c in range(n):
if(r > c) and (m[r][c] != 0):
return False
return True
Matrice simmetrica
Carica numeri pseudocasuali in [0, 1)
def simmetrica(n):
m = []
for r in range(n):
riga = []
for c in range(n):
if(r <= c):
riga.append(random.random())
else:
riga.append(m[c][r])
m.append(riga)
return m
def test_simmetrica(m):
n = len(m)
for r in range(n):
for c in range(n):
if(m[r][c] != m[c][r]):
return False
return True
Attenzione: per ogni esercizio è possibile semplificare / ottimizzare il codice cambiando gli indici?