Εργασία 3: Παρεμβολή, παλινδρόμηση, εύρεση ριζών#
Οδηγίες#
Όι ζητούμενες συναρτήσεις δεν πρέπει έχουν αναφορές σε global μεταβλητές εκτός από σταθερές καθιερωμένων βιβλιοθηκών (π.χ numpy.pi).
Ο αριθμός μητρώου πρέπει να είναι σύμφωνος με αυτόν που έχει δηλωθεί στο προφίλ του eclass.
Όπου χρησιμοποιούνται ψηφία του αριθμού μητρώου, πρέπει να είναι απευθείας δηλωμένα στον κώδικα (hard-coded) και όχι να εξάγονται από τον ΑΜ.
Το αρχείο της εργασίας πρέπει να τρέχει εξ ολοκλήρου (Run All) για να βαθμολογηθεί.
# Εισαγωγή μονάδων κώδικα
# - Μην αλλάζετε αυτό το κελί.
import numpy as np
import matplotlib.pyplot as plt
# Στοιχεία φοιτητή
# - Εισάγετε το όνομά σας με ελληνικούς χαρακτήρες.
onoma = "onoma"
eponymo = "eponymo"
AM = 3100999
Άσκηση 1#
Για τον μελέτη μηχανών εσωτερικής καύσης χρησιμοποιούνται διαγράμματα μέγιστης ροπής (engine torque) - ταχύτητας περιστροφής (engine speed).
Σε μια δημοσιευμένη μελέτη μετρήθηκαν αυτά τα μεγέθη για έναν δίλιτρο πετρελαιοκινητήρα Ford. Η δημοσίευση είναι προσβάσιμη μέσα από το δίκτυο του πανεπιστημίου ή με VPN αν είστε εκτός.
Αρχικά συγκεντρώστε τα δεδομένα της ταχύτητας περιστροφής (Ν) και της μέγιστης ροπής (Tinit) από τον πίνακα 4. Θα βρείτε πολλές γραμμές με την ίδια περίπου ταχύτητα περιστροφής. Επιλέξτε την τελευταία.
Στην συνέχεια υπολογίστε την ροπή που αποδίδει ο κινητήρας μετά από από μία τροποποίηση (Tmod), σύμφωνα με την σχέση:
\[ T_{mod}(N)=T_{init}(N)+(1.2+1.5a-2b+0.5c)\frac{N}{1000}\]όπου a,b,c τα 3 τελευταία ψηφία του αριθμού μητρώου σας (c=τελευταίο).
Έτσι θα καταλήξετε σε έναν πίνακα της μορφής:
Engine speed (N) [rpm] |
Initial max engine torque (Tinit) [Nm] |
Modified max engine torque (Tmod) [Nm] |
---|---|---|
1000 |
… |
… |
1500 |
249.4 |
… |
2000 |
… |
… |
2500 |
… |
… |
3000 |
283.6 |
… |
3500 |
… |
… |
Γράψτε μια συνάρτηση με το όνομα myfunction1
η οποία δέχεται ως είσοδο μία τιμή ταχύτητας περιστροφής \(Ν_{in}\) και υπολογίζει στο σημείο αυτό την μέγιστη ροπή του τροποποιημένου κινητήρα με
γραμμική παρεμβολή,
παρεμβολή φυσικών κυβικών spline,
παρεμβολή πολυώνυμου 5ου βαθμού και
παλινδρόμηση πολυώνυμου 3ου βαθμού.
Η συνάρτηση πρέπει να επιστρέφει ένα διάνυσμα με τις αυτές τις 4 τιμές. Εκτός του πεδίου λειτουργίας του κινητήρα πρέπει να επιστρέφει μηδέν σε όλες τις τιμές του πίνακα.
Ελέγξτε τα αποτελέσματα της συνάρτησης για τις παρακάτω ταχύτητες περιστροφής (\(N_{in}\)):
1200 rpm
2300 rpm
4200 rpm
# Λύση της άσκησης 1
# - Σε αυτό το κελί γράψτε μόνο τις ζητούμενες συναρτήσεις χωρίς print και input.
def myfunction1(Nin:float) -> np.ndarray:
# Συμπληρώστε τις εντολές import εδώ σε περίπτωση που χρειαστείτε επιπλέον μονάδες κώδικα
from scipy.interpolate import CubicSpline
return np.array([0.,0.,0.,0.])
# Πρόχειρο άσκησης 1
# - Σε αυτό το κελί μπορείτε να τυπώσετε μεταβλητές και να κάνετε γραφικές παραστάσεις για επαλήθευση. Δεν λαμβάνεται υπόψη στην βαθμολόγηση.
Άσκηση 2#
Η θερμοκρασία \(Τ\) του κυλινδρικού οξειδωτικού καταλυτικού μετατροπέα (DOC) του ίδιου κινητήρα μπορεί να υπολογιστεί από το ισοζύγιο ενέργειας:
Δίνονται τα μεγέθη:
\(h_c=5+0.5a+0.1b\; \frac{W}{m^2K}\), συντελεστής συναγωγής
\(d [m]\), η διάμετρος του καταλυτικού μετατροπέα (να αναζητηθεί στον πίνακα 3 την ίδιας δημοσίευσης)
\(l [m]\), το μήκος του καταλυτικού μετατροπέα (να αναζητηθεί στον πίνακα 3 την ίδιας δημοσίευσης)
\(Τ_a=273+18+0.5c\; K\), θερμοκρασία αέρα του περιβάλλοντος χώρου
\(σ \left[\frac{W}{m^2K^4}\right]\) η σταθερά Stefan-Boltzmann (να αναζητηθεί στο διαδικτυο και να δηλωθεί με ακρίβεια 3 σημαντικών ψηφίων)
\(ε=0.8\), ο συντελεστής εκπομπής
\(Τ_s =10\; °C=10+273=283\; K\), θερμοκρασία των επιφανειών του περιβάλλοντος χώρου
και ο τύπος για την παράπλευρη επιφάνεια του κυλίνδρου:
$A=π d l$
Προσοχή: Όλες οι θερμοκρασίες στην εξίσωση δίνονται σε Kelvin.
Γράψτε μια συνάρτηση myfunction2
που δέχεται ως όρισμα την απώλεια θερμότητας από την παράπλευρη επιφάνεια \(\dot{q}\) και επιστρέφει ένα διάνυσμα με τις τρεις τιμές θερμοκρασίας \(Τ\) (σε K) που προκύπτουν από τις μεθόδους:
διχοτόμησης με όρια \(300\) και \(1500\;Κ\).
Newton-Raphson με αρχική τιμή \(300\;Κ\).
τέμνουσας με αρχικές τιμές \(300\) και \(310\;Κ\).
Τα αποτελέσματα να υπολογιστούν με απόλυτη ακρίβεια \(10^{-3}\) για τις τιμές απώλειας θερμότητας \(\dot{q}\):
500 W
1000 W
1500 W
# Λύση της άσκησης 2
# - Σε αυτό το κελί γράψτε μόνο τις ζητούμενες συναρτήσεις χωρίς print και input.
def myfunction2(qdot: float)->np.ndarray:
# Συμπληρώστε τις εντολές import εδώ σε περίπτωση που χρειαστείτε επιπλέον μονάδες κώδικα
return np.array([0.,0.,0.])
# Πρόχειρο άσκησης 2
# - Σε αυτό το κελί μπορείτε να τυπώσετε μεταβλητές και να κάνετε γραφικές παραστάσεις για επαλήθευση. Δεν λαμβάνεται υπόψη στην βαθμολόγηση.