Ασκήσεις στην 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