bille fini etudiants

$ 6.55

Introduction à l’analyse numérique Mouvement d’une bille dans une gouttière bosselée TP4 (noté) On étudie le mouvement d’une bille dans une gouttière bosselée. On veut dire par là que le mouvement de la bille a lieu dans un plan vertical , et que la hauteur de la bille au point d’abscisse est , où est une fonction donnée telle que la courbe décrit le profil de la gouttière, pour dans l’intervalle . L’altitude de référence est le niveau , et on dira que la bille en est dans un creux lorsque , et sur une bosse lorsque . On se donne un repère orthonormé du plan vertical , et on note les coordonnées de la bille à l’intant dans ce repère. Autrement dit, est une courbe paramétrée qui décrit le mouvement de la bille dans le repère . Puisque la bille est toujours en contact avec la gouttière, on a pour tout , Il suffit donc de connaître pour connaitre la position de la bille. 1. Représentation graphique %matplotlib notebook import numpy as np import matplotlib.pyplot as plt Question 1 Définir une fonction gouttiere(f, a, b, ax) qui, étant donnés une fonction , un intervalle et une fenêtre de type subplot, trace la courbe représentative de sur l’intervalle dans la fenetre et renvoie cette fenêtre ainsi modifiée. Définir aussi une fonction bille(f, c, ax) qui dessine la bille à la position dans la fenetre . On pourra pour cela utiliser la fonction python scatter. %matplotlib inline import numpy as np import matplotlib.pyplot as plt # Réponse 1. Complétez le code suivant. def gutter(f, a, b, ax): x = np.linspace(a, b, 1000) y = f(x) ax.plot(x, y, label=f.__name__) ax.legend() return ax def ball(f, c, ax): x = np.array([c]) y = np.array([f(c)]) ax.scatter(x, y, color=’red’, marker=’o’, label=’Ball at ({:.2f}, {:.2f})’.format(c, f(c))) ax.legend() return ax # Ne pas modifier. def f0(x): return x**2-1 def df0(x): return 2*x def f1(x): return x**4/2 – 2 * x**2 def df1(x): return 2*x**3 – 4*x def f2(x): return -np.sin(x) def df2(x): return -np.cos(x) def f3(x): return 2 * f0(x – 1) + f1(x) / 1.5 – 2 def df3(x): return 2 * df0(x – 1) + df1(x) / 1.5 # Exemple d’utilisation : fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4)) # Utilisation de la fonction gutter pour tracer la courbe ax1 = gutter(f0, -2, 2, ax1) # Utilisation de la fonction ball pour tracer la boule à (1, f0(1)) ax2 = ball(f0, 1, ax2) plt.show() Question 2 Utilisez vos fonctions bille et gouttiere pour tracer les 4 profils et dans quatre fenêtres de la même figure et y positionner une bille. On y tracera aussi en pointillés verts la droite qui sert de niveau de référence. Chaque fenêtre doit avoir une légende explicite. # Réponse 2. Complétez le code suivant. import numpy as np import matplotlib.pyplot as plt import sympy as sp # Définir les symboles x, g, R = sp.symbols(‘x g R’) # Valeurs données g_value = 10 # Accélération due à la gravité en m/s^2 # Equation : a = g + R(x) a = g + R # Résoudre pour R(x) reaction_force = sp.solve(a – g_value, R) # Imprimer la solution print(“The reaction force R(x) is:”, reaction_force[0]) def gutter(f, a, b, ax): x = np.linspace(a, b, 1000) y = f(x) ax.plot(x, y, label=f.__name__) ax.axhline(0, color=’green’, linestyle=’–‘, label=’z = 0′) # Niveau de référence ax.legend() return ax def ball(f, c, ax): x = np.array([c]) y = np.array([f(c)]) ax.scatter(x, y, color=’red’, marker=’o’, label=’Ball at ({:.2f}, {:.2f})’.format(c, f(c))) ax.legend() return ax # Ne pas modifier. def f0(x): return x**2 – 1 def df0(x): return 2*x def f1(x): return x**4/2 – 2 * x**2 def df1(x): return 2*x**3 – 4*x def f2(x): return -np.sin(x) def df2(x): return -np.cos(x) def f3(x): return 2 * f0(x – 1) + f1(x) / 1.5 – 2 def df3(x): return 2 * df0(x – 1) + df1(x) / 1.5 # Exemple d’utilisation : fig, axs = plt.subplots(2, 2, figsize=(10, 8)) # Utilisation des fonctions gutter et ball pour tracer f0 axs[0, 0] = gutter(f0, -2, 2, axs[0, 0]) axs[0, 0] = ball(f0, 1, axs[0, 0]) # Utilisation des fonctions de gouttière et de boule pour tracer f1 axs[0, 1] = gutter(f1, -2, 2, axs[0, 1]) axs[0, 1] = ball(f1, 1, axs[0, 1]) # Utilisation des fonctions gouttière et boule pour tracer f2 axs[1, 0] = gutter(f2, -2, 2, axs[1, 0]) axs[1, 0] = ball(f2, 0, axs[1, 0]) # Utilisation des fonctions gouttière et boule pour tracer f3 axs[1, 1] = gutter(f3, -2, 2, axs[1, 1]) axs[1, 1] = ball(f3, 2, axs[1, 1]) plt.tight_layout() plt.show() The reaction force R(x) is: 10 – g 2. Mise en équation Au point d’abscisse , la bille est soumise à deux forces : la pesanteur et la réaction de la rigole . On néglige donc la force de rappel

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.