Le ballon météorologique

Auteur

Jérôme Soucy

Dernière mise à jour

31 octobre 2024 à 21:03

Un ballon est lancé verticalement vers le haut avec une vitesse initiale de 10 m/s. En tenant compte de la résistance de l’air, sa hauteur (en mètres) après \(t\) secondes est donnée par la fonction :

\[h(t) = 50\ln(\cosh(0.2t)) + 10t - 4.9t^2\]

À quel moment le ballon atteint-il son altitude maximale ?

1. Visualisation du problème

Commençons par visualiser la hauteur du ballon en fonction du temps :

Code
library(ggplot2)
library(dplyr)

# Fonction hauteur
h <- function(t) {
  50 * log(cosh(0.2 * t)) + 10 * t - 4.9 * t^2
}

# Création des données
t_vals <- seq(0, 3, by = 0.01)
height_data <- data.frame(
  t = t_vals,
  height = sapply(t_vals, h)
)

# Graphique
ggplot(height_data, aes(x = t, y = height)) +
  geom_line(color = "blue", size = 1) +
  labs(x = "Temps (s)", y = "Hauteur (m)") +
  theme_minimal() +
  ggtitle("Trajectoire du ballon")

Figure 6.1: Hauteur du ballon en fonction du temps

2. La vitesse du ballon

La vitesse est la dérivée de la hauteur. Pour trouver le point culminant, nous devons trouver quand la vitesse est nulle.

\[v(t) = h'(t) = 10\tanh(0.2t) + 10 - 9.8t\]

Visualisons la vitesse :

Code
# Fonction vitesse
v <- function(t) {
  10 * tanh(0.2 * t) + 10 - 9.8 * t
}

# Création des données
velocity_data <- data.frame(
  t = t_vals,
  velocity = sapply(t_vals, v)
)

# Graphique
ggplot(velocity_data, aes(x = t, y = velocity)) +
  geom_line(color = "red", size = 1) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  labs(x = "Temps (s)", y = "Vitesse (m/s)") +
  theme_minimal() +
  ggtitle("Vitesse du ballon")

Figure 6.2: Vitesse du ballon en fonction du temps

3. Méthode de Newton-Raphson

Pour trouver quand la vitesse est nulle, nous devons résoudre : \[f(t) = 10\tanh(0.2t) + 10 - 9.8t = 0\]

La dérivée de cette fonction est : \[f'(t) = 2\,\text{sech}^2(0.2t) - 9.8\]

Implémentons la méthode de Newton-Raphson :

Code
# Fonction f(t) et sa dérivée
f <- function(t) {
  10 * tanh(0.2 * t) + 10 - 9.8 * t
}

f_prime <- function(t) {
  2 * (1 / cosh(0.2 * t))^2 - 9.8
}

# Fonction Newton-Raphson
newton_raphson <- function(x0, tolerance = 1e-6, max_iter = 100) {
  x <- x0
  iterations <- data.frame(
    iteration = 0,
    x = x0,
    f_x = f(x0)
  )
  
  for (i in 1:max_iter) {
    x_new <- x - f(x) / f_prime(x)
    
    iterations <- rbind(iterations, 
                       data.frame(iteration = i,
                                x = x_new,
                                f_x = f(x_new)))
    
    if (abs(x_new - x) < tolerance) {
      break
    }
    x <- x_new
  }
  
  return(iterations)
}

# Application avec x0 = 1
resultats <- newton_raphson(1)

# Affichage des résultats
knitr::kable(resultats,
             col.names = c("Itération", "t (secondes)", "f(t)"),
             digits = 6,
             caption = "Résultats de la méthode de Newton-Raphson")
Résultats de la méthode de Newton-Raphson
Itération t (secondes) f(t)
0 1.000000 2.173753
1 1.275930 -0.006241
2 1.275143 0.000000
3 1.275143 0.000000

4. Vérification graphique

Visualisons la convergence sur le graphique de la vitesse :

Code
# Filtrer les données pour l'intervalle [1, 1.5]
velocity_data_zoom <- velocity_data %>% 
  filter(t >= 1 & t <= 1.5)

# Ajout des points d'itération au graphique de vitesse avec zoom
ggplot(velocity_data_zoom, aes(x = t, y = velocity)) +
  geom_line(color = "red", size = 1) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_point(data = resultats, 
             aes(x = x, y = f_x),
             color = "blue",
             size = 3) +
  geom_path(data = resultats, 
            aes(x = x, y = f_x),
            color = "blue",
            arrow = arrow(length = unit(0.2, "cm")),
            size = 0.5) +
  labs(x = "Temps (s)", y = "Vitesse (m/s)") +
  scale_x_continuous(limits = c(1, 1.5),
                    breaks = seq(1, 1.5, 0.1)) +
  theme_minimal() +
  ggtitle("Convergence de la méthode de Newton-Raphson (zoom)") +
  theme(axis.text = element_text(size = 10),
        axis.title = element_text(size = 12))

Figure 6.3: Convergence de la méthode de Newton-Raphson

Conclusion

La méthode de Newton-Raphson converge rapidement vers la solution : le ballon atteint son altitude maximale après environ 1.275 secondes.

À cet instant, l’altitude du ballon est de 6.39 mètres.