Aufgabenstellung & Lösung

a) Bedeutung der grauen Fläche

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.

b) Zeitpunkt der maximalen Höhe

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).

c) Landehöhe im Vergleich zum Start

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.

d) Skizze des Höhenverlaufs \(h(t)\)

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.