Πληροφορική Ι — Εβδομάδα 8

Πίνακες και Γραμμική Παλινδρόμηση

Πίνακες ως λίστες λιστών

Παγίδα: [[0]*cols]*rows

Πρόσθεση & πολλαπλασιασμός

Σημαντικό

\(A \cdot B \neq B \cdot A\) γενικά.

Ανάστροφος & ορίζουσα

Αλγόριθμος απαλοιφής Gauss

Ευθεία απαλοιφή (→ άνω τριγωνική μορφή) + αντικατάσταση προς τα πίσω, γραμμή προς γραμμή:

def gauss_solve(A, b):
    n = len(A)
    M = [A[i][:] + [b[i]] for i in range(n)]   # επαυξημένος πίνακας
    for col in range(n):
        pivot_row = max(range(col, n), key=lambda r: abs(M[r][col]))
        M[col], M[pivot_row] = M[pivot_row], M[col]
        for row in range(col + 1, n):
            factor = M[row][col] / M[col][col]
            for k in range(col, n + 1):
                M[row][k] -= factor * M[col][k]
    x = [0] * n
    for row in range(n - 1, -1, -1):
        s = M[row][n] - sum(M[row][col] * x[col] for col in range(row + 1, n))
        x[row] = s / M[row][row]
    return x

Αναγωγή σε ήδη γνωστό πρόβλημα

Προσαρμογή δεδομένων σε καμπύλη = ένα ακόμα γραμμικό σύστημα (κανονικές εξισώσεις) — λύνεται με την ίδια gauss_solve:

Κουαρτέτο του Anscombe (1973)

Τέσσερα σύνολα · ίδιος μ.ο., διασπορά, συσχέτιση, ευθεία ελαχίστων τετραγώνων:

Ίδια νούμερα, τέσσερις ιστορίες. Πάντα σχεδιάζουμε τα δεδομένα.

Σύνοψη

  • Πίνακες ως λίστες λιστών: πρόσθεση, πολλαπλασιασμός, ανάστροφος, ορίζουσα
  • Αλγόριθμος απαλοιφής Gauss για γραμμικά συστήματα
  • Αναγωγή προβλήματος σε ήδη γνωστό — επαναχρησιμοποίηση κώδικα
  • Κουαρτέτο του Anscombe: ίδια στατιστικά ≠ ίδια δεδομένα — πάντα σχεδιάζουμε

⤺ Πλήρεις σημειώσεις  ·  Πρόγραμμα μαθήματος