{
"cells": [
{
"cell_type": "markdown",
"id": "bf0cd470",
"metadata": {},
"source": [
"# Exercice"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c0302414",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from scipy.optimize import curve_fit"
]
},
{
"cell_type": "markdown",
"id": "908b1a9d",
"metadata": {},
"source": [
"### Data generation"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "76ccfc6f",
"metadata": {},
"outputs": [],
"source": [
"# constants\n",
"g = 10.\n",
"V0 = 1.\n",
"H = 1."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d58ffe3e",
"metadata": {},
"outputs": [],
"source": [
"# Model \n",
"l = V0 * np.sqrt(2.*H/g)"
]
},
{
"cell_type": "markdown",
"id": "9a03ead6",
"metadata": {},
"source": [
"### Données\n",
"pour file \"V1msHvariable.csv\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "dd458e01",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.40 0.80 0.01\n",
"0.42 0.90 0.01\n",
"0.45 1.00 0.01\n",
"0.47 1.10 0.01\n",
"0.49 1.20 0.01\n"
]
}
],
"source": [
"#\n",
"error = 0.01\n",
"for h in [0.8, 0.9,1,1.1,1.2]:\n",
" l = V0 * np.sqrt(2.*h/g)\n",
" print('{0:.2f} {1:0.2f} {2:.2f}'.format(l,h,error))"
]
},
{
"cell_type": "markdown",
"id": "a06afab7",
"metadata": {},
"source": [
"### Données\n",
"pour file \"H1mVvariable.csv\""
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ca4407db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.45 1.00 0.10\n",
"0.54 1.20 0.10\n",
"0.67 1.50 0.10\n",
"0.89 2.00 0.10\n",
"1.34 3.00 0.10\n"
]
}
],
"source": [
"error = 0.1\n",
"for v in [1, 1.2,1.5,2,3]:\n",
" l = v * np.sqrt(2.*H/g)\n",
" print('{0:.2f} {1:0.2f} {2:.2f}'.format(l,v,error))"
]
},
{
"cell_type": "markdown",
"id": "81b6f7b3",
"metadata": {},
"source": [
"## Solution"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a748d198",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# import image module\n",
"from IPython.display import Image\n",
" \n",
"# get the image\n",
"Image(url=\"experience.png\", width=500, height=500)"
]
},
{
"cell_type": "markdown",
"id": "301b6ab8",
"metadata": {},
"source": [
" Une bille supposée ponctuelle avec une vitesse horizontale $V_0$ tombe d'une table de hauteur $H$ et rencontre le sol à une longueur $L$.\n",
"\n",
"Nous disposons de deux fichiers de mesures expérimentales (fichiers formatés csv séparés par des \";\")\n",
"- \"V1msHvariable.csv\" expérience de mesure de la longueur $L$ à vitesse $V_0=1 \\ m/s$ constante pour des différentes hauteurs $H$ avec l'erreur correspondante\n",
"- \"H1mVvariable.csv\" expérience de mesure de la longueur $L$ à hauteur $H= 1 \\ m$ constante pour des différentes vitesses $V_0$ avec l'erreur correspondante\n",
"\n",
"On propose un modèle pour la longueur $L$\n",
"\n",
"$$ L = C V_0^\\alpha H^\\beta $$\n",
"\n",
"nous allons évaluer les coefficients $\\alpha$ et $\\beta$, ainsi que la constante $C$."
]
},
{
"cell_type": "markdown",
"id": "bb58b946",
"metadata": {},
"source": [
"### Point 1.1\n",
"En utilisant la bibliothèque Pandas, lisez le fichier \"V1msHvariable.csv\" et définisez les variables $L$, $H$, \n",
"et $erreur$ (de la mesure de hauteur)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8aa94441",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" L H error\n",
"0 0.40 0.8 0.01\n",
"1 0.42 0.9 0.01\n",
"2 0.45 1.0 0.01\n",
"3 0.47 1.1 0.01\n",
"4 0.49 1.2 0.01\n"
]
}
],
"source": [
"d = pd.read_csv(\"V1msHvariable.csv\",delimiter=\";\")\n",
"print(d)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "296b12e0",
"metadata": {},
"outputs": [],
"source": [
"d.head()\n",
"# taking values from headers\n",
"L = d[\"L\"]\n",
"H = d[\"H\"]\n",
"e = d[\"error\"]"
]
},
{
"cell_type": "markdown",
"id": "fc7a10ed",
"metadata": {},
"source": [
"### Point 1.2\n",
"Faites une figure de $L$ vs $H$ avec barres d'erreur"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "d8aab11d",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "67ec753b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"