🎯 Στόχος του Μαθήματος

Πριν μελετήσουμε πώς αυξάνονται οι πληθυσμοί, χρειαζόμαστε μια βασική ιδέα από τα μαθηματικά: την παράγωγο.

Η παράγωγος μιας συνάρτησης μας λέει πόσο γρήγορα αλλάζει.

Αντί για αφηρημένους τύπους, θα ξεκινήσουμε με κάτι πολύ οικείο: ένα αυτοκίνητο που κινείται σε έναν δρόμο.


🚗 Η Ιστορία του Αυτοκινήτου

Φανταστείτε ένα αυτοκίνητο που:

  • Φάση Α (0–30 δευτερόλεπτα): Κινείται με σταθερή ταχύτητα 20 m/s. Δεν επιταχύνει, δεν φρενάρει — σταθερή κίνηση.

  • Φάση Β (30–60 δευτερόλεπτα): Πατά γκάζι και επιταχύνει ομαλά. Η ταχύτητά του αυξάνεται από 20 m/s ως 50 m/s.

Το ερώτημα: Πώς συνδέονται απόσταση, ταχύτητα και επιτάχυνση;


⚙️ Βήμα 1 — Ορισμός Χρόνου και Παραμέτρων

# -------------------------------------------------------
# Ορίζουμε τη χρονική κλίμακα της κίνησης
# seq() δημιουργεί μια ακολουθία τιμών
# από 0 ως 60 δευτερόλεπτα, με βήμα 0.1 sec
# -------------------------------------------------------
t <- seq(0, 60, by = 0.1)   # χρόνος σε δευτερόλεπτα

# Παράμετροι Φάσης Α — σταθερή κίνηση
v0 <- 20        # αρχική ταχύτητα (m/s)
t_switch <- 30  # χρονική στιγμή που αρχίζει η επιτάχυνση (sec)

# Παράμετρος Φάσης Β — επιτάχυνση
# Θέλουμε από t=30 ως t=60 η ταχύτητα να πάει από 20 → 50 m/s
# Άρα: a = Δv / Δt = (50 - 20) / (60 - 30) = 1 m/s²
a <- 1          # επιτάχυνση (m/s²)

⚙️ Βήμα 2 — Υπολογισμός Ταχύτητας

Η ταχύτητα αλλάζει ανάλογα με τη φάση:

\[ v(t) = \begin{cases} 20 & \text{αν } t \leq 30 \\ 20 + 1 \cdot (t - 30) & \text{αν } t > 30 \end{cases} \]

# -------------------------------------------------------
# ifelse() λειτουργεί σαν μια επιλογή:
#   αν η συνθήκη είναι TRUE  → πρώτη τιμή
#   αν η συνθήκη είναι FALSE → δεύτερη τιμή
#
# Εδώ: αν t <= 30, ταχύτητα = v0 (σταθερή)
#       αν t >  30, ταχύτητα αυξάνεται γραμμικά
# -------------------------------------------------------
v <- ifelse(
  t <= t_switch,
  v0,                          # Φάση Α: σταθερή ταχύτητα
  v0 + a * (t - t_switch)      # Φάση Β: v = v₀ + a·(t - 30)
)

⚙️ Βήμα 3 — Υπολογισμός Απόστασης

Η απόσταση είναι το ολοκλήρωμα της ταχύτητας (ή αντίστοιχα: η ταχύτητα είναι η παράγωγος της απόστασης).

\[ x(t) = \begin{cases} v_0 \cdot t & \text{αν } t \leq 30 \\ v_0 \cdot 30 + v_0(t-30) + \frac{1}{2}a(t-30)^2 & \text{αν } t > 30 \end{cases} \]

# -------------------------------------------------------
# Φάση Α: x = v₀ · t  (ευθύγραμμη ομαλή κίνηση)
# Φάση Β: x = απόσταση Φάσης Α στο t=30
#           + v₀·(t-30) + ½·a·(t-30)²
#
# Υπολογίζουμε πρώτα την απόσταση που έχει διανυθεί
# μέχρι τη στιγμή t=30 (τέλος Φάσης Α)
# -------------------------------------------------------
x_at_switch <- v0 * t_switch   # = 20 × 30 = 600 μέτρα

x <- ifelse(
  t <= t_switch,
  v0 * t,                                              # Φάση Α
  x_at_switch + v0 * (t - t_switch) + 0.5 * a * (t - t_switch)^2  # Φάση Β
)

⚙️ Βήμα 4 — Υπολογισμός Επιτάχυνσης

Η επιτάχυνση είναι η παράγωγος της ταχύτητας.

# -------------------------------------------------------
# Φάση Α: ταχύτητα σταθερή → δεν αλλάζει → επιτάχυνση = 0
# Φάση Β: ταχύτητα αυξάνεται κατά 1 m/s κάθε δευτερόλεπτο
#          → επιτάχυνση = 1 m/s²
# -------------------------------------------------------
acc <- ifelse(t <= t_switch, 0, a)

📊 Βήμα 5 — Τα Γραφήματα

Τώρα θα δούμε τις τρεις ποσότητες οπτικά. Παρατηρήστε πώς αλλάζει το σχήμα κάθε γραφήματος στα 30 δευτερόλεπτα.

# -------------------------------------------------------
# par(mfrow = c(3, 1)) → διαιρεί το παράθυρο γραφικών
# σε 3 γραμμές και 1 στήλη (τα 3 γραφήματα το ένα κάτω
# από το άλλο)
# mar = c(bottom, left, top, right) → περιθώρια σε γραμμές
# -------------------------------------------------------
par(mfrow = c(3, 1), mar = c(4.5, 5, 3, 2))

# --- Γράφημα 1: Απόσταση vs Χρόνος ---
plot(t, x,
     type = "l",           # "l" = line (γραμμή)
     lwd  = 2.5,           # πάχος γραμμής
     col  = "#2C7BB6",     # χρώμα (μπλε)
     xlab = "Χρόνος (sec)",
     ylab = "Απόσταση x (m)",
     main = "Απόσταση ως προς Χρόνο  —  x(t)",
     cex.main = 1.3, cex.lab = 1.1)

# Κάθετη διακεκομμένη γραμμή στο t=30 (αλλαγή φάσης)
abline(v = t_switch, lty = 2, col = "gray50")
text(31, max(x) * 0.15, "Αρχή\nεπιτάχυνσης",
     adj = 0, col = "gray40", cex = 0.9)

# Ετικέτα για κάθε φάση
text(13, max(x) * 0.85, "Φάση Α\n(ευθύγραμμη)", col = "#2C7BB6", cex = 0.95)
text(47, max(x) * 0.20, "Φάση Β\n(παραβολή)", col = "#2C7BB6", cex = 0.95)

# -------------------------------------------------------
# Εφαπτομένη ευθεία στη φάση επιτάχυνσης
# Διαλέγουμε τη χρονική στιγμή t₀ = 45 sec
# Σε αυτό το σημείο:
#   - η απόσταση είναι x(45)
#   - η κλίση της εφαπτομένης = παράγωγος = v(45)
# -------------------------------------------------------
t0   <- 45                                                # χρονική στιγμή
x_t0 <- x_at_switch + v0*(t0 - t_switch) + 0.5*a*(t0 - t_switch)^2
v_t0 <- v0 + a*(t0 - t_switch)        # στιγμιαία ταχύτητα = κλίση εφαπτομένης

# Εξίσωση εφαπτομένης ευθείας: y = x(t₀) + v(t₀) · (t - t₀)
t_tan <- seq(t0 - 10, t0 + 10, length.out = 50)
y_tan <- x_t0 + v_t0 * (t_tan - t0)

# Σχεδιάζουμε την εφαπτομένη
lines(t_tan, y_tan, col = "#E66101", lwd = 2.5)

# Σημείο επαφής (τελεία)
points(t0, x_t0, pch = 19, col = "#E66101", cex = 1.6)

# Επεξήγηση με βέλος
arrows(x0 = 53, y0 = x_t0 + 280,
       x1 = t0 + 0.5, y1 = x_t0 + 30,
       length = 0.1, col = "#E66101", lwd = 1.5)
text(53.5, x_t0 + 320,
     paste0("κλίση εφαπτομένης\n= v(", t0, ") = ", v_t0, " m/s"),
     col = "#E66101", cex = 0.9, adj = 0)

# --- Γράφημα 2: Ταχύτητα vs Χρόνος ---
plot(t, v,
     type = "l",
     lwd  = 2.5,
     col  = "#1A9641",    # πράσινο
     xlab = "Χρόνος (sec)",
     ylab = "Ταχύτητα v (m/s)",
     main = "Ταχύτητα ως προς Χρόνο  —  v(t) = dx/dt",
     cex.main = 1.3, cex.lab = 1.1)

abline(v = t_switch, lty = 2, col = "gray50")
text(31, max(v) * 0.25, "Αρχή\nεπιτάχυνσης",
     adj = 0, col = "gray40", cex = 0.9)

# Βέλος που δείχνει ότι η κλίση της γραμμής = επιτάχυνση
text(40, 32, "κλίση = a = 1 m/s²", col = "#1A9641", cex = 0.9)

# --- Γράφημα 3: Επιτάχυνση vs Χρόνος ---
plot(t, acc,
     type = "l",
     lwd  = 2.5,
     col  = "#D7191C",    # κόκκινο
     xlab = "Χρόνος (sec)",
     ylab = "Επιτάχυνση a (m/s²)",
     main = "Επιτάχυνση ως προς Χρόνο  —  a(t) = dv/dt",
     ylim = c(-0.3, 1.5),
     cex.main = 1.3, cex.lab = 1.1)

abline(v = t_switch, lty = 2, col = "gray50")
abline(h = 0, lty = 3, col = "gray70")
text(31, 1.3, "Αρχή\nεπιτάχυνσης",
     adj = 0, col = "gray40", cex = 0.9)


🔎 Η Εφαπτομένη και η Στιγμιαία Ταχύτητα

Στο πρώτο γράφημα μόλις προσθέσαμε μια εφαπτομένη ευθεία στην καμπύλη της απόστασης, στο σημείο t = 45 sec.

💡 Η κεντρική γεωμετρική ιδέα: Η κλίση της εφαπτομένης ευθείας σε οποιοδήποτε σημείο της καμπύλης απόστασης μας δίνει τη στιγμιαία ταχύτητα σε εκείνη ακριβώς τη χρονική στιγμή.

Όσο πιο απότομη (μεγάλη γωνία με τον οριζόντιο άξονα) είναι η εφαπτομένη, τόσο πιο μεγάλη είναι η στιγμιαία ταχύτητα.

Ας το δούμε σχεδιάζοντας πολλαπλές εφαπτομένες σε διαφορετικές χρονικές στιγμές:

# -------------------------------------------------------
# Επιλέγουμε τέσσερις χρονικές στιγμές για να δείξουμε
# πώς αλλάζει η κλίση της εφαπτομένης κατά μήκος της καμπύλης
# -------------------------------------------------------
t_points <- c(15, 35, 45, 55)   # στιγμές για τις εφαπτομένες
colors_t <- c("#1A9641", "#FDAE61", "#E66101", "#D7191C")

par(mar = c(4.5, 5, 3, 2))

# Καμπύλη απόστασης
plot(t, x,
     type = "l", lwd = 2.5, col = "#2C7BB6",
     xlab = "Χρόνος (sec)", ylab = "Απόσταση x (m)",
     main = "Η κλίση της εφαπτομένης = στιγμιαία ταχύτητα",
     cex.main = 1.2)

abline(v = t_switch, lty = 2, col = "gray60")

# -------------------------------------------------------
# Loop: για κάθε χρονική στιγμή υπολογίζουμε
#   - τη θέση x(ti)
#   - τη στιγμιαία ταχύτητα v(ti) (= κλίση εφαπτομένης)
#   - και σχεδιάζουμε την εφαπτομένη
# -------------------------------------------------------
for (i in seq_along(t_points)) {

  ti <- t_points[i]

  # Θέση στο σημείο επαφής
  if (ti <= t_switch) {
    xi <- v0 * ti                                           # Φάση Α
    vi <- v0                                                # σταθερή ταχύτητα
  } else {
    xi <- x_at_switch + v0*(ti - t_switch) + 0.5*a*(ti - t_switch)^2
    vi <- v0 + a*(ti - t_switch)                            # επιταχυνόμενη
  }

  # Εφαπτομένη: y = xi + vi · (t - ti)
  tt <- seq(ti - 6, ti + 6, length.out = 30)
  yy <- xi + vi * (tt - ti)

  lines(tt, yy, col = colors_t[i], lwd = 2)
  points(ti, xi, pch = 19, col = colors_t[i], cex = 1.4)

  # Ετικέτα με τη στιγμιαία ταχύτητα
  text(ti, xi - 130,
       paste0("t=", ti, "s\nv=", vi, " m/s"),
       col = colors_t[i], cex = 0.85, font = 2)
}

legend("topleft",
       legend = "Καμπύλη απόστασης x(t)",
       col    = "#2C7BB6", lty = 1, lwd = 2.5,
       bty    = "n", cex = 0.95)

Τι παρατηρούμε

Στιγμή Κλίση εφαπτομένης Στιγμιαία ταχύτητα
t = 15 s (Φάση Α) Μέτρια — σταθερή 20 m/s
t = 35 s (Φάση Β, νωρίς) Λίγο πιο απότομη 25 m/s
t = 45 s (Φάση Β, μέση) Πιο απότομη 35 m/s
t = 55 s (Φάση Β, τέλος) Πολύ απότομη 45 m/s

Στη Φάση Α όλες οι εφαπτομένες έχουν την ίδια κλίση — επειδή η καμπύλη είναι ευθεία, η ευθεία είναι η ίδια η εφαπτομένη της. Άρα η ταχύτητα είναι σταθερή (20 m/s).

Στη Φάση Β κάθε εφαπτομένη είναι πιο απότομη από την προηγούμενη. Αυτό σημαίνει: η ταχύτητα αυξάνεται — δηλαδή έχουμε επιτάχυνση.

Συμπέρασμα

\[ v(t_0) = \frac{dx}{dt}\bigg|_{t=t_0} = \text{κλίση της εφαπτομένης της } x(t) \text{ στο } t_0 \]

Αυτή ακριβώς είναι η γεωμετρική σημασία της παραγώγου: η παράγωγος σε ένα σημείο = κλίση της εφαπτομένης ευθείας σε εκείνο το σημείο.


💡 Βήμα 6 — Τι Βλέπουμε; Η Κεντρική Ιδέα

Κοιτάξτε τα τρία γραφήματα μαζί και παρατηρήστε:

Γράφημα Φάση Α (0–30 sec) Φάση Β (30–60 sec)
Απόσταση x(t) Ευθεία γραμμή Καμπύλη (παραβολή)
Ταχύτητα v(t) Οριζόντια ευθεία Ανηφορική ευθεία
Επιτάχυνση a(t) = 0 = 1 m/s² (σταθερή)

Η σύνδεση:

\[\boxed{v(t) = \frac{dx}{dt}} \qquad \text{και} \qquad \boxed{a(t) = \frac{dv}{dt} = \frac{d^2x}{dt^2}}\]

Με απλά λόγια: - Η ταχύτητα μας λέει πόσο γρήγορα αλλάζει η θέση. - Η επιτάχυνση μας λέει πόσο γρήγορα αλλάζει η ταχύτητα. - Αυτή ακριβώς η σχέση εκφράζει η παράγωγος.


🔍 Βήμα 7 — Η Παράγωγος Αριθμητικά (Προαιρετικό)

Δεν χρειαζόμαστε τύπους για να υπολογίσουμε (κατά προσέγγιση) την παράγωγο. Αρκεί να δούμε πόσο αλλάζει η συνάρτηση σε ένα πολύ μικρό βήμα χρόνου.

# -------------------------------------------------------
# diff() υπολογίζει τις διαφορές μεταξύ διαδοχικών τιμών
# Π.χ. diff(c(1, 3, 6)) → c(2, 3)
#
# Η αριθμητική παράγωγος: dx/dt ≈ Δx / Δt
# Δt = 0.1 sec (το βήμα του t που ορίσαμε στην αρχή)
# -------------------------------------------------------
dt <- 0.1

# Αριθμητική παράγωγος απόστασης → πρέπει να μοιάζει με v
v_numerical <- diff(x) / dt

# Αριθμητική παράγωγος ταχύτητας → πρέπει να μοιάζει με acc
a_numerical <- diff(v) / dt

# Ο χρόνος για τις παραγώγους έχει ένα στοιχείο λιγότερο
t_deriv <- t[-1]   # αφαιρούμε το πρώτο στοιχείο

# Σύγκριση: αριθμητική vs αναλυτική ταχύτητα
cat("Μέγιστη απόκλιση v_αριθμητική vs v_αναλυτική:",
    round(max(abs(v_numerical - v[-1])), 4), "m/s\n")
## Μέγιστη απόκλιση v_αριθμητική vs v_αναλυτική: 0.05 m/s
# -------------------------------------------------------
# Οπτική σύγκριση: αναλυτική ταχύτητα (γραμμή)
# vs αριθμητική παράγωγος (διακεκομμένη)
# -------------------------------------------------------
par(mar = c(4.5, 5, 3, 2))

plot(t, v,
     type = "l", lwd = 2.5, col = "#1A9641",
     xlab = "Χρόνος (sec)", ylab = "Ταχύτητα (m/s)",
     main = "Ταχύτητα: Αναλυτική vs Αριθμητική Παράγωγος",
     cex.main = 1.2)

lines(t_deriv, v_numerical,
      lty = 2, lwd = 2, col = "#D7191C")

legend("topleft",
       legend = c("Αναλυτική v(t)", "Αριθμητική  dx/dt"),
       col    = c("#1A9641", "#D7191C"),
       lty    = c(1, 2), lwd = 2,
       bty    = "n", cex = 1.0)

Οι δύο καμπύλες ταυτίζονται σχεδόν τέλεια — αυτό επιβεβαιώνει ότι η παράγωγος της απόστασης είναι πράγματι η ταχύτητα!


🌿 Σύνδεση με τη Βιολογία

Γιατί μαθαίνουμε αυτά σε μάθημα βιολογίας;

Στη βιολογία συχνά μας ενδιαφέρει ο ρυθμός με τον οποίο αλλάζει κάτι:

Βιολογική Ποσότητα «Απόσταση» «Ταχύτητα» (παράγωγος)
Μέγεθος πληθυσμού N(t) N dN/dt = ρυθμός ανάπτυξης
Συγκέντρωση φαρμάκου C(t) C dC/dt = ρυθμός απέκκρισης
Βιομάζα B(t) B dB/dt = ρυθμός παραγωγής

Στα επόμενα μαθήματα θα δούμε ακριβώς αυτό: πώς ο ρυθμός μεταβολής του πληθυσμού (δηλ. η παράγωγος dN/dt) καθορίζει αν ένας πληθυσμός μεγαλώνει, μικραίνει ή σταθεροποιείται.


✏️ Ερωτήσεις Κατανόησης

  1. Στη Φάση Α, η γραφική παράσταση απόστασης-χρόνου είναι ευθεία γραμμή. Τι σημαίνει αυτό για την παράγωγό της (= ταχύτητα);

  2. Στη Φάση Β, η απόσταση ακολουθεί παραβολή. Τι σχήμα έχει η ταχύτητα; Και η επιτάχυνση;

  3. Αν ένας πληθυσμός βακτηρίων αυξάνεται εκθετικά, πώς περιμένετε να μοιάζει η γραφική παράσταση του ρυθμού ανάπτυξης dN/dt ως προς τον χρόνο;


Στο επόμενο μάθημα: Εκθετική Ανάπτυξη Πληθυσμών — N(t) = N₀ · e^(r·t)