Ασκήσεις στην Numpy: Γραμμικά Συστήματα
Γενική οδηγία:
Αποθηκεύστε τα αρχεία που σας δίνονται στον υπολογιστή σας και χρησιμοποιώντας την υλοποίηση της python που προτιμάτε απαντήστε στην ερώτηση.
Numpy
Αν έχουμε έναν πίνακα Α σε μορφή ενός array της Numpy,
π.χ., Α=np.array([[2,1],[1,2]])
, για να
πάρουμε ένα στοιχείο του Α, δίνουμε π.χ.
Α[0,1], για να πάρουμε το 1 (1η γραμμή, 2η στήλη). Για να
πάρουμε έναν υποπίνακα πρέπει να δώσουμε, π.χ.
A[:,0:1]
, για να πάρουμε την πρώτη στήλη
np.array([[2],[1]])
. Αν δώσουμε
Α[:,0]
τότε δεν παίρνουμε 2-διάστατο array, αλλά το μονοδιάστατο np.array([2,1])
.
Αν θέλουμε να αλλάξουμε τα στοιχεία ενός υποπίνακα του Α,
μπορούμε να το κάνουμε με μια ταυτόχρονη εκχώρηση, αλλά τα
arrays πρέπει να έχουν την ίδια δομή, (shape). Έτσι αν
x=np.array([[0],[5]])
, τότε η εντολή
A[:,0:1]=x
, αλλάζει την πρώτη στήλη του A.
- Θεωρούμε έναν πίνακα \(2\times 2\), πχ
$$A=\left(\begin{array}{cc}
2 & 1\\1&2\end{array}\right).
$$
Λύστε τα γραμμικά συστήματα
$$ Ax_1=
\left(\begin{array}{c}
1\\0
\end{array}\right)\text { και }
Ax_2=
\left(\begin{array}{c}
0\\1
\end{array}\right)
$$
Ο πίνακας Β με πρώτη στήλη τη \(x_1\) και δεύτερη τη
\(x_2\), θα είναι ο αντίστροφος του A. Φτιάξτε μια
συνάρτηση η οποία έχει ως όρισμα έναν πίνακα A
\(2\times2\) και υπολογίζει τα δύο διανύσματα \(x_1\) και
\(x_2\) και στη συνέχεια επιστρέφει
τον πίνακα Β.
Numpy8-find-inv.py
- Τροποποιήστε την προηγούμενη συνάρτηση ώστε να μπορείτε να την εφαρμόσετε σε πίνακες \(n\times n\). Τώρα θα πρέπει να σχηματίσουμε τα \(n\) διανύσματα \(x_1,\dots,x_n\)
λύνοντας τα γραμμικά συστήματα
$$ Ax_1=
\left(\begin{array}{c}
1\\0\\ \vdots\\0
\end{array}\right),\text { }\cdots,
Ax_n=
\left(\begin{array}{c}
0\\ \vdots\\0\\1
\end{array}\right).
$$
Στη συνέχεια σχηματίζουμε τον πίνακα \(B\), με ανάλογο τρόπο όπως πριν. Φτιάξτε μια συνάρτηση η οποία έχει ως όρισμα έναν πίνακα A \(n\times n\) και υπολογίζει τα διανύσματα \(x_1,\dots, x_n\) και στη συνέχεια επιστρέφει
τον πίνακα Β.
Numpy8-find-inv2.py
- Θέλουμε να ελέγξουμε αν ο πίνακας που δημιουργούμε στις προηγούμενες ασκήσεις είναι ο αντίστροφος που δίνει η συνάρτηση inv της Numpy. Φτιάξτε μια συνάρτηση η οποία να έλεγχει αν ισχύει η σχέση \(ΒA=AΒ=I\) και να επιστρέφει ανάλογα True ή False
Numpy8-find-inv3.py