Ασκήσεις στην Numpy: Λύση γραμμικών συστημάτων

Γενική οδηγία:

Αποθηκεύστε τα αρχεία που σας δίνονται στον υπολογιστή σας και χρησιμοποιώντας την υλοποίηση της python που προτιμάτε απαντήστε στην ερώτηση.

Numpy

Για να γίνει η συνηθισμένη πράξη εσωτερικό γινόμενο της γραμμικής άλγεβρας, ανάμεσα σε 2 μονοδιάστατα array a και b της Numpy πρέπει να χρησιμοποιήσουμε με τη συνάρτηση dot, π.χ. numpy.dot(a,b) .
  • Φτιάξτε μια συνάρτηση η οποία να δέχεται ως όρισμα 2 διανύσματα a, b, τύπου array και να ελέγχει αν αυτά είναι ορθογώνια και να τυπώνει ένα σχετικό μήνυμα. Στον κώδικά σας δεν θα έχει σημασία ποιό είναι το μέγεθος των διανυσμάτων, αρκεί να είναι το ίδιο. Numpy7-vertical.py
    	
  • Για να γίνει η συνηθισμένη πράξη εσωτερικό γινόμενο της γραμμικής άλγεβρας, ανάμεσα σε δύο 2-διάστατα array a και b της Numpy πρέπει να χρησιμοποιήσουμε τη συνάρτηση της Numpy dot, ανάμεσα στον ανάστροφο του a και το b, \( a^Tb\). To διάνυσμα ανάστροφος το παίρνουμε με το a.T. Θεωρήσετε ότι τα διανύσματα του \(\mathbb{R}^m\) να είναι 2-διάστατα array της μορφής m γραμμών και 1 στήλης. Φτιάξτε μια συνάρτηση η οποία να δέχεται ως όρισμα 2 διανύσματα a, b, τύπου array 2-διάστατα και να ελέγχει αν αυτά είναι ορθογώνια και να τυπώνει ένα σχετικό μήνυμα. Στον κώδικά σας δεν θα έχει σημασία ποιό είναι το μέγεθος των διανυσμάτων, αρκεί να είναι το ίδιο. Numpy7-vertical2.py
    	
  • Θεωρείστε 2 πίνακες \(n\times n\) και φτιάξτε μια συνάρτηση που να ελέγχει αν οι πίνακες είναι αντίστροφοι ή όχι. Αυτό μπορεί να γίνει αν πολλαπλασιάσετε τους δύο πίνακες (χρησιμοποιήστε την dot) και πάρετε το μοναδιαίο πίνακα \(n\times n\). Για να ελέγξουμε αν δύο arrays a,b είναι ίσα χρησιμοποιούμε την εντολή της numpy, array_equal(a,b). Ελέγξτε τη συνάρτηση σας για τους πίνακες $$A=\left( \begin{array}{cc} 2 &0\\0 &2 \end{array}\right),\quad B=\left( \begin{array}{cc} 1/2 &0\\0 &1/2 \end{array}\right), $$ και για τους $$A=\left( \begin{array}{cc} 2 &0\\0 &2 \end{array}\right),\quad B=\left( \begin{array}{cc} 0 &2\\2 &0 \end{array}\right). $$ Numpy7-check-inv.py
    	
  • Φτιάξτε μια συνάρτηση που να ελέγχει αν πολλάπλασιάσουμε τη λύση x ενός γραμμικού συστήματος που παίρνουμε με τη solve της βιβλιοθήκης numpy.linalg, με τον πίνακα A λαμβάνουμε το b. Numpy7-check-solve.py
    	
  • Η απεικόνιση μιας γραφικής παράστασης σε 3 διαστάσεις είναι πιο πολύπλοκη από τις 2 διαστάσεις. Θα χρησιμοποιήσουμε τις βιβλιοθήκες matplotlib και mpl_toolkits.mplot3d για να σχεδιάσετε τη γραφική παράσταση της συνάρτησης $$f(x,y)=\cos(x)\sin(y) $$ στο χωρίο \([-3,3]\times[-3,3]\). Για να μπορέσουμε να απεικονίσουμε την 3-διάστατη γραφική παράσταση πρέπει να δημιουργήσουμε ένα αντικείμενο της βιβλιοθήκης mpl_toolkits.mplot3d το οποίο μπορούμε να το ονομάσουμε π.χ. ax. Αυτό γίνεται με την εντολή ax=plt.axes(projection='3d'). Σε αυτό το αντικείμενο μπορούμε να απεικονίσουμε την τριδιάστατη γραφική παράσταση με την εντολή π.χ. ax.plot_surface(Χ,Υ,Ζ). Οι παράμετροι Χ,Υ, Ζ είναι arrays της numpy που περιέχουν τις συντεταγμένες των σημείων της γραφικής παράστασης. X και Y δημιουργούνται από την εντολή meshgrid της numpy. Η Z προκύπτει από την μαθηματικό τύπο της γραφικής παράστασης, π.χ. \(Ζ=f(X,Y)\). Προσθέστε λεζάντες στους άξονες χρησιμοποιώντας την ax.set_xlabel() για τον άξονα x και με ανάλογο τρόπο για τους υπόλοιπους άξονες. Δημιουργήστε τις γραφικές παραστάσεις των συναρτήσεων \(f(x,y)=x^2+y^2\), \(f(x,y)=x^2-y^2\), \(f(x,y)=\cos(x^2+y^2)\) \(f(x,y)=\cos(x^2-y^2)\), \(f(x,y)=\cos(x^2)\sin(y^2)\), \(f(x,y)=\sin(\sqrt{x^2+y^2})\), \(f(x,y)=\cos(\sqrt{x^2+y^2})\), \(f(x,y)=\cos(\sqrt{x^2+y^2})\sin(\sqrt{x^2+y^2})\), επίσης αντί για τη plot_surface χρησιμοποιήστε και τη plot_wireframe. Numpy8-surf-plot.py