{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[{"file_id":"1XbxlmQno3MajykWTmehXvx_fECFd1AiZ","timestamp":1726564489040},{"file_id":"1cD945WPeoiv0rxl49JP3NCKxnZKeppUe","timestamp":1670229694189}]},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["#TP 8 Mouvement circulaire uniforme\n","\n","Le pointage est déjà réalisé, les données sont dans un fichier .csv, qu'il faut maintenant aller lire.\n","\n","Suivre la procédure suivante\n","- Créer dans drive un dossier data\n","- Enregistrer le fichier .csv dans ce dossier\n","- Exécuter le code du premier bloc ci-dessous et se laisser guider. Il faut s'identifier avec son compte google puis copier le code de vérification et le coller dans la zone indiquée\n","- A gauche du notebook cliquer sur l'icône fichier ![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAA7CAYAAAD8QkPoAAABLElEQVRoge3ZIZKDMBiG4a8767gAPvGxzOAJnmPgcVwAgcNwBw6QY8SD5wCJ3hU766B808m0iP+1JPRpCSUzPIqi+MHN+vo04ChBsQmKTVBsgmITFJug2ATFJig2QbEJiu2WqO+zA3meo6qq04kxRizL8j6UUgrzPF9OVkphGIbkqMPLZ62lJltr0XVdUhBw8ktprekTWGvpL+G9R9/3iDE+HffWhW6MQV3Xl+NOFzoAbNuGaZqSgNq2hVIKZVle3iBPUSEEeO+ToEII9Nhb/k8Jik1QbIJiExTbLVGHj5l1XWGMgdYa4zgm+aD/nce6rq+hnHNomgZZlsEYkwQF/O1WnXOX4x5nbxzyPKf3SWzOOez7/jrqk91yoQuKTVBsgmITFJug2ATFJii2X4gERPtjBPYcAAAAAElFTkSuQmCC). S'il n'y est pas cliquer sur l'avant dernière icône (palette de commande, puis afficher l'explorateur de fichier)\n","- Rechercher le dossier data et le fichier .csv\n","- cliquer sur les 3 petits points pour copier le chemin d'accès\n","- coller ce chemin dans la partie lecture du .csv"],"metadata":{"id":"jbggC-BFYe5L"}},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6bYf2pXpYVmM","executionInfo":{"status":"ok","timestamp":1670229546745,"user_tz":-60,"elapsed":3249,"user":{"displayName":"Physique Chimie Val d'Argens","userId":"11438166584008528880"}},"outputId":"1614d40f-b610-4547-acaa-25bb22b7b2e4"},"outputs":[{"output_type":"stream","name":"stdout","text":["Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"]}],"source":["from google.colab import drive\n","drive.mount('/content/drive')\n","#bibliothèques\n","import numpy as np\n","import matplotlib.pyplot as plt\n","import csv"]},{"cell_type":"markdown","source":["# Importation des données du .csv\n","Le pointage a été réalisé avec Pyméca vidéo, Régressi ou vidanalysis, les données de $t$, $x$ et $y$ sont dans un fichier .csv\n","\n","Nous allons utiliser une fonction qui permet d'extraire les données.\n","\n","Il faut jeter un coup d'eil au fichier .CSV ici les varaibles sont dans l'ordre $t$, $x$ et $y$ séparées par des virgules avec un point pour la décimale.\n","\n","Attention à bien choisir la fonction en lien avec l'outil utilisé pour le pointage.\n"],"metadata":{"id":"FzXrhfQDZy0N"}},{"cell_type":"code","source":["#lecture du fichier .csv avec pymecavideo ou regressi\n","#les trois arguments sont :\n","#fichier : nom du fichier.csv\n","#sep : type de séparateur\n","#n : numéro de la colonne à extraire\n","def CSV_pymeca(fichier,sep,n):\n"," file=open(fichier,'r')\n"," reader=csv.reader(file,delimiter=sep)\n"," col=np.array([])\n"," for row in reader:\n"," notation_point=row[n].replace(',','.')#remplace les , par des .\n"," col=np.append(col,notation_point)\n"," col=np.delete(col,0) #supprime la première valeur\n"," file.close()\n"," result=[float(i) for i in col]\n"," result=np.array(result)\n"," return result\n","\n"," #lecture du fichier .csv Regressi\n","def CSV_regressi(fichier,sep,n):\n"," file=open(fichier,'r')\n"," reader=csv.reader(file,delimiter=sep)\n"," col=np.array([])\n"," for row in reader:\n"," col=np.append(col,row[n])\n"," col=np.delete(col,0) #supprime la première valeur\n"," col=np.delete(col,0) #avec pointage regressi unité à supprimer\n"," file.close()\n"," result=[float(i) for i in col]\n"," result=np.array(result)\n"," return result\n","\n","#lecture du fichier .csv Vidanalysis\n","def CSV_vidanalysis(fichier,sep,n):\n"," file=open(fichier,'r')\n"," reader=csv.reader(file,delimiter=sep)\n"," col=np.array([])\n"," for row in reader:\n"," notation_point=row[n].replace(',','.')\n"," col=np.append(col,notation_point)\n"," col=np.delete(col,0) #supprime la première valeur\n"," file.close()\n"," result=[float(i) for i in col]\n"," result=np.array(result)\n"," return result"],"metadata":{"id":"iLAsTUXuZ1qd"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["On va maintenant mettre les données dans les variables correspondantes."],"metadata":{"id":"740qNS5KaCAf"}},{"cell_type":"code","source":["#nom et type de separateur\n","#c'est ici qu'il faut coller le chemin d'accès\n","nom_fichier='/content/drive/MyDrive/data/velo2_correct.csv' #remplacer velo2_correct avec le nom de votre fichier\n","separateur=','\n","\n","#stockage des données\n","t=CSV_vidanalysis(nom_fichier,separateur,0)\n","x=CSV_vidanalysis(nom_fichier,separateur,1)\n","y=CSV_vidanalysis(nom_fichier,separateur,2)"],"metadata":{"id":"Gb0-ilrpaJa_"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Avant de continuer on vérifie que le pointage réalisé est correct et qu'il n'y a pas de problèmes en traçant la trajectoire du système."],"metadata":{"id":"i9z3SliLcWQs"}},{"cell_type":"code","source":["plt.figure(dpi=100)\n","plt.axis('equal')\n","plt.title('Trajectoire du système')\n","plt.xlabel('x (m)')\n","plt.ylabel('y (m)')\n","plt.plot(x, y, 'b+', label = 'Trajectoire')\n","plt.grid()\n","plt.show()"],"metadata":{"id":"hQOSLjNncPPy"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Suite du TP, on commence à la ligne 29 pour respecter le sujet"],"metadata":{"id":"bvx70wvsdTd2"}},{"cell_type":"code","source":["\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","#rayon\n","R=np.sqrt(x**2+y**2)\n","\n","#nb de valeurs dans x et y\n","Nx=len(x)\n","Ny=len(y)\n","\n","#calcul des vitesse\n","vx=np.array([(x[i+1]-x[i-1])/(t[i+1]-t[i-1]) for i in range (1,Nx-1)])\n","vy=np.array([(y[i+1]-y[i-1])/(t[i+1]-t[i-1]) for i in range (1,Ny-1)])\n","v=np.sqrt(vx**2+vy**2)\n","\n","#nb de valeurs dans vx et vy\n","Nvx=len(vx)\n","Nvy=len(vy)\n","\n","#calcul de l'accélération\n","#ax=\n","#ay=\n","#a=\n","\n","\n","#moyennes et incertitudes types\n","#vitesse\n","vmoy=np.mean(v)\n","uv=np.std(v)/np.sqrt(len(v))\n","#acceleration\n","#amoy=np.mean(a)\n","#ua=np.std(a)/np.sqrt(len(a))\n","#rayon\n","Rmoy=np.mean(R)\n","uR=np.std(R)/np.sqrt(len(R))\n","\n","\n","#calcul de l'accélération théorique\n","#atheo=\n","\n","\n","\n","\n","# Creation du graphique\n","plt.figure(1)\n","#partie de gauche\n","plt.subplot(121)\n","plt.axis('equal')\n","plt.title('Trajectoire du système')\n","plt.xlabel('x (m)')\n","plt.ylabel('y (m)')\n","plt.plot(x, y, 'b+', label = 'Trajectoire')\n","#partie de droite\n","plt.subplot(122)\n","plt.axis('equal')\n","plt.title('Vecteurs')\n","plt.xlabel('x (m)')\n","plt.ylabel('y (m)')\n","plt.plot(x, y, 'b+', label = 'Trajectoire')\n","# for i in range(len(vx)) :\n","# plt.quiver(x[i+1], y[i+1], vx[i], vy[i], angles = \"xy\", scale_units = \"xy\", scale = 10, color = \"red\")\n","#\n","# for i in range(len(ax)) :\n","# plt.quiver(x[i+2], y[i+2], ax[i], ay[i], angles = \"xy\", scale_units = \"xy\", scale = 100, color = \"blue\")\n","plt.show()\n","\n","\n","\n","\n","\n","\n"],"metadata":{"id":"LLTOOQRMdUxW"},"execution_count":null,"outputs":[]}]}