####ID 33-vector-projection #### Άσκηση: (Συνέχεια της άσκησης 32. Μπορείτε εδώ να χρησιμοποιήσετε τη συνάρτηση που γράψατε στην άσκηση 32.) #### #### Γράψτε μια συνάρτηση python #### #### proj(v, w) #### #### που να παίρνει ως όρισμα δύο διανύσματα v, w στο R^3 ή στο R^2 και να επιστρέφει το διάνυσμα (στον ίδιο χώρο #### R^3 ή R^2) που είναι η ορθογώνια προβολή του διανύσματος v πάνω στην ευθεία που ορίζει το διάνυσμα w. #### #### Τα διανύσματα στο R^3 αναπαρίστανται με τις συντεταγμένες τους ως λίστες μήκους 3. Η αρχή των αξόνων στο R^3 #### π.χ. είναι το [0, 0, 0]. Αντίστοιχα τα διανύσματα στο R^2 είναι λίστες μήκους 2. Τα v και w είναι ή και #### τα δύο στο R^2 ή και τα δύο στο R^3 (αυτό μπορείτε να το υποθέσετε ότι ισχύει) αλλά δεν ξέρετε εκ των #### προτέρων σε ποια περίπτωση είστε και η συνάρτησή σας θα πρέπει να δουλεύει και στις δύο περιπτώσεις. #### #### *** Παράδειγμα: *** #### #### Αν v=[1, 0] και w=[1, 1] τότε proj(v, w) = [0.5, 0.5]. #### Αν v=[1, 0, 0] και w=[1, 1, 1] τότε proj(v, w) = [0.3333333, 0.3333333, 0.3333333]. #### #### *** Γενικές Οδηγίες: *** #### #### Γράφετε τον κώδικά σας αποκλειστικά ανάμεσα στις γραμμές START και STOP παρακάτω. #### Δεν πρέπει να πειράξετε καθόλου τις υπόλοιπες γραμμές #### #### Για να τρέξετε το πρόγραμμά σας (αποθηκευμένο στο αρχείο user.py) δίνετε την εντολή #### #### python3 user.py #### #### ενώ για να το ελέγξετε με τον tester δίνετε την εντολή #### #### python3 tester.py #### #### φροντίζοντας τα αρχεία user.py και tester.py να είναι στον ίδιο κατάλογο (directory) #### #### ****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ**** #### Μη γράψετε καμιά εντολή εισόδου (input) ή εξόδου (print) #### στον κώδικα που θα βάλετε ανάμεσα στα START και STOP. Αυτά είναι ήδη γραμμένα. #### Αν βάλετε και σεις το πρόγραμμά σας βγαίνει λάθος. #### v = eval(input("Δώστε το διάνυσμα v ως μια λίστα δύο ή τριών πραγματικών αριθμών: ")) #### w = eval(input("Δώστε το διάνυσμα w ως μια λίστα πραγματικών αριθμών (ίσου μήκους με το v που δώσατε πριν): ")) #### #### Υποθέσεις: #### #### Στο σημείο αυτό ο χρήστης έχει δώσει τις λίστες v, w #### #### Απαιτήσεις: #### #### Στο τέλος του προγράμματός σας θα πρέπει #### #### η συνάρτηση proj #### #### να υπολογίζει αυτό που περιγράφεται στην εκφώνηση. #### Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και πάνω ####START Από δω και κάτω γράφετε το πρόγραμμά σας.---------------------------------------------------------------- def innerp(v, w): #### Εδώ μπορείτε να αντιγράψετε, αν θέλετε, τη συνάρτηση που γράψατε στην άσκηση 32 def proj(v, w): #### ####STOP Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και κάτω-------------------------------------------------------- print("Η απάντηση είναι {}.".format(proj(v, w))) ####