Εργασία 4: Παραγώγιση και ολοκλήρωση

Εργασία 4: Παραγώγιση και ολοκλήρωση#

Οδηγίες#

  • Όι ζητούμενες συναρτήσεις δεν πρέπει έχουν αναφορές σε global μεταβλητές εκτός από τις σταθερές καθιερωμένων μονάδων κώδικα (π.χ numpy.pi) και όσες μεταβλητές δίνονται στο πρώτο κελί.

  • Ο αριθμός μητρώου πρέπει να είναι σύμφωνος με αυτόν που έχει δηλωθεί στο προφίλ του eclass.

  • Όπου χρησιμοποιούνται ψηφία του αριθμού μητρώου, πρέπει να είναι απευθείας δηλωμένα στον κώδικα (hard-coded) κάθε συνάρτησης και όχι να εξάγονται από τον ΑΜ.

  • Το αρχείο της εργασίας πρέπει να τρέχει εξ ολοκλήρου (Run All) για να βαθμολογηθεί.

# Εισαγωγή μονάδων κώδικα και δεδομένων
# - Μην αλλάζετε αυτό το κελί.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

WLTP=pd.read_csv("https://raw.githubusercontent.com/onoufrios/numan/refs/heads/main/assign/4/WLTP_class3.csv")

# Οι παρακάτω global μεταβλητές μπορούν να χρησιμοποιηθούν στις συναρτήσεις σας.
t_wltp=WLTP["Time[s]"].to_numpy()
u_wltp=WLTP["Vehicle_speed[km/h]"].to_numpy()
# Στοιχεία φοιτητή
# - Εισάγετε το όνομά σας με ελληνικούς χαρακτήρες.

onoma = "onoma"
eponymo = "eponymo"
AM = 3100999

Άσκηση 1#

Για την έγκριση της κυκλοφορίας ενός επιβατηγού οχήματος στην Ευρωπαϊκή Ένωση γίνονται μετρήσεις σύμφωνα με τον οδικό κύκλο WLTP. Ο οδικός κύκλος για οχήματα κλάσης 3 δίνεται με την μορφή χρονοσειράς της ταχύτητας \(u_{init} [\text{km/h}]\) εδώ.

Έστω μία τροποποίηση του κύκλου WLTP:

\[\begin{split} \begin{align} u_{mod}(t)&=u_{init}(t)\cdot (1.15-a/100+b/75) & \text{για } & t \le 589\\ u_{mod}(t)&=u_{init}(t)\cdot (0.85+c/100) & \text{για } & t > 1477 \end{align} \end{split}\]

όπου a,b και c, τα 3 τελευταία ψηφία του αριθμού μητρώου σας (c=τελευταίο).

Γράψτε μια συνάρτηση myfunction1, η οποία υπολογίζει την χρονοσειρά της τροποποιημένης ταχύτητας και επιτάχυνσης \(a[\text{m}/\text{s}^2]\):

\[a=\frac{du}{dt}\]

Στο αρχικό σημείο χρησιμοποιήστε προς τα εμπρός διαφορά, στο τελικό προς τα πίσω διαφορά και στα ενδιάμεσα κεντρικές διαφορές. Στην συνέχεια υπολογίστε την μέγιστη επιτάχυνση \(a_{acc}\) και μέγιστη επιβράδυνση \(a_{dec}\).

Η συνάρτηση πρέπει να δέχεται ως είσοδο τον χρόνο \(t_1\) και να επιστρέφει ένα διάνυσμα δύο τιμών με:

  • την \(a(t_1)\) που προκύπτει από γραμμική παρεμβολή.

  • το ποσοστό (τιμές από 0 έως 1) σε σχέση με την μέγιστη επιτάχυνση \(\frac{a}{a_{acc}}\) ή επιβράδυνση \(\frac{a}{a_{dec}}\) αναλόγως το πρόσημο της \(a\).

Ελέγξτε τα αποτελέσματα της συνάρτησης για τις τιμές του \(t\):

  • 200s

  • 1200s

  • 1770s

Δώστε προσοχή στην μονάδες του πίνακα και τις μονάδες που ζητούνται στα αποτελέσματα.

# Λύση της άσκησης 1
# - Σε αυτό το κελί γράψτε μόνο τις ζητούμενες συναρτήσεις χωρίς print και input.
def myfunction1(t1:float) -> np.ndarray:
    return np.array([0.,0.])
# Πρόχειρο άσκησης 1
# - Σε αυτό το κελί μπορείτε να τυπώσετε μεταβλητές και να κάνετε γραφικές παραστάσεις για επαλήθευση. Δεν λαμβάνεται υπόψη στην βαθμολόγηση.

Άσκηση 2#

Γράψτε μια συνάρτηση με το όνομα myfunction2 που δέχεται ως όρισμα τον χρόνο \(t_1\) και υπολογίζει το ποσοστό \(p\) (τιμές από 0 έως 1) της απόστασης που έχει διανυθεί σε σχέση με την συνολική απόσταση στον τροποποιημένο κύκλο WLTP της άσκησης 1:

\[p(t)=\frac{S(t)}{S_{tot}}\]

Αν ο χρόνος \(t\) δεν ταυτίζεται με καμία τιμή στον πίνακα, χρησιμοποιήστε την κοντινότερη τιμή.

Ο υπολογισμός της \(S(t_1)\) και \(S_{tot}\) να γίνει δύο φορές χρησιμοποιώντας:

  1. μέθοδο του τραπεζίου (μπορείτε να γράψετε τον δικό σας κώδικα ή να χρησιμοποιήσετε την συνάρτηση trapezoid/trapz)

  2. κανόνα 1/3 του Simpson. Χρησιμοποιήστε την συνάρτηση simpson στην μονάδα κώδικα SciPy, αλλά όχι την απoδοκιμαζόμενη (deprecated) σύνταξη.

Η συνάρτηση πρέπει να επιστρέφει ένα διάνυσμα με δύο τιμές που αντιστοιχούν στις 2 μεθόδους.

Ελέγξτε τα αποτελέσματα της συνάρτησης για τους ίδιους χρόνους με την άσκηση 1.

# Λύση της άσκησης 2
# - Σε αυτό το κελί γράψτε μόνο τις ζητούμενες συναρτήσεις χωρίς print και input.
def myfunction2(t1:float) -> np.ndarray:
    return np.array([0.,0.])
# Πρόχειρο άσκησης 2
# - Σε αυτό το κελί μπορείτε να τυπώσετε μεταβλητές και να κάνετε γραφικές παραστάσεις για επαλήθευση. Δεν λαμβάνεται υπόψη στην βαθμολόγηση.