Matrici particolari

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

Meglio… a partire dalla 2° riga, fino alla colonna precedente…

def test_triangolare_sup(m):
    n = len(m)
    for r in range(1, n):
        for c in range(0, r):
            if (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

Meglio… a partire dalla colonna successiva…

def test_simmetrica(m):
    n = len(m)
    for r in range(n):
        for c in range(r+1, n):
            if (m[r][c] != m[c][r]): 
                return False
    return True