Die grau gefärbte Fläche entspricht dem Integral \(\int_{0}^{10} v(t) dt\). Im Sachkontext bedeutet dies die Höhenzunahme des Ballons in den ersten 10 Minuten.
Der Ballon erreicht seine maximale Höhe, wenn die Vertikalgeschwindigkeit von positiv auf negativ wechselt (Nullstelle mit Vorzeichenwechsel). * Laut Grafik geschieht dies bei ca. \(t = 25\) min. * Begründung: Vorher ist \(v(t) > 0\) (Ballon steigt), danach ist \(v(t) < 0\) (Ballon sinkt).
Die Landehöhe entspricht dem Gesamtwert des Integrals \(\int_{0}^{60} v(t) dt\). * Die Fläche oberhalb der x-Achse (Aufstieg) ist visuell deutlich größer als die Fläche unterhalb der x-Achse (Abstieg). * Daher ist die Netto-Höhenänderung positiv. Der Ballon landet höher als er gestartet ist.
Der folgende Code generiert eine angenäherte Funktion für die Vertikalgeschwindigkeit und berechnet daraus die Höhe.
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# 1. Definition einer angenäherten Funktion für v(t)
# Wir nutzen eine Funktion, die die Form der Grafik im Buch nachbaut.
# Bereich 0-15: Anstieg (Wurzelartig/Logarithmisch)
# Bereich 15-25: Abfall zur Nullstelle
# Bereich 25-60: Negativer Bereich (Sinus-artig)
v_func <- function(t) {
ifelse(t >= 0 & t <= 15, 100 * (1 - exp(-0.2 * t)), # Anstieg
ifelse(t > 15 & t <= 25, 100 - 4 * (t - 15)^1.5, # Abfall zur 0
ifelse(t > 25 & t <= 60, -60 * sin((t - 25) * pi / 35), # Negativer Bereich
0)))
}
# Datenframe erstellen
t_vals <- seq(0, 60, by = 0.1)
df <- data.frame(t = t_vals, v = sapply(t_vals, v_func))
# Höhe h(t) berechnen (kumulierte Summe / Numerische Integration)
# dt ist die Schrittweite (0.1)
dt <- 0.1
df <- df %>%
mutate(h = cumsum(v) * dt)
# Plot erstellen
p1 <- ggplot(df, aes(x = t, y = v)) +
geom_line(color = "orange", size = 1.2) +
geom_area(data = subset(df, t >= 0 & t <= 10), aes(y = v), fill = "grey80", alpha = 0.5) +
geom_hline(yintercept = 0, color = "black") +
geom_vline(xintercept = 25, linetype = "dashed", color = "blue", alpha = 0.5) + # Max Höhe
labs(title = "Vertikalgeschwindigkeit v(t)", y = "v in m/min", x = "Zeit t in min") +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p2 <- ggplot(df, aes(x = t, y = h)) +
geom_line(color = "darkgreen", size = 1.2) +
geom_hline(yintercept = 0, color = "black") +
geom_point(aes(x = 0, y = 0), color = "red", size = 3) + # Start
geom_point(aes(x = 60, y = h[t == 60]), color = "red", size = 3) + # Landung
labs(title = "Flughöhe h(t) (Skizze)", y = "Höhe h in m", x = "Zeit t in min") +
theme_minimal()
# Beide Plots nebeneinander anzeigen (benötigt patchwork oder gridExtra, hier einfach untereinander)
print(p1)
print(p2)
## Warning in geom_point(aes(x = 0, y = 0), color = "red", size = 3): All aesthetics have length 1, but the data has 601 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## Warning in geom_point(aes(x = 60, y = h[t == 60]), color = "red", size = 3): All aesthetics have length 1, but the data has 601 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.