diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index eba60735e69bceb8ce75db174fa550606c2adeb5..40b43b2da874aaf2f5211698ca091ca2a663c0e8 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -1541,7 +1541,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -2586,7 +2586,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 18, @@ -2619,16 +2619,16 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 22, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, @@ -2651,7 +2651,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2702,16 +2702,16 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 27, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, @@ -2734,7 +2734,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -2759,7 +2759,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -2805,16 +2805,16 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 33, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, @@ -2860,16 +2860,16 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 42, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, @@ -2902,26 +2902,26 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "valeur moyenne pour l'annee 2020 : [CO2] = 412.89 ppm\n", - "valeur moyenne pour l'annee 2021 : [CO2] = 415.29 ppm\n", - "valeur moyenne pour l'annee 2022 : [CO2] = 417.72 ppm\n", - "valeur moyenne pour l'annee 2023 : [CO2] = 420.18 ppm\n", - "valeur moyenne pour l'annee 2024 : [CO2] = 422.66 ppm\n", - "valeur moyenne pour l'annee 2025 : [CO2] = 425.17 ppm\n" + "valeur moyenne pour l'annee 2020 : [CO2] = 412.69 ppm\n", + "valeur moyenne pour l'annee 2021 : [CO2] = 415.09 ppm\n", + "valeur moyenne pour l'annee 2022 : [CO2] = 417.52 ppm\n", + "valeur moyenne pour l'annee 2023 : [CO2] = 419.97 ppm\n", + "valeur moyenne pour l'annee 2024 : [CO2] = 422.45 ppm\n", + "valeur moyenne pour l'annee 2025 : [CO2] = 424.96 ppm\n" ] } ], "source": [ "#Valeurs moyennes : on peut se contenter d'une intégration manuelle ici\n", "for x in range(2020, 2026):\n", - " borneInf = (x-1958)*12+1\n", + " borneInf = (x-1958)*12\n", " borneSup = borneInf + 12\n", " Y2 = (a2*borneSup**3)/3 + (b2*borneSup**2)/2 + c2*borneSup\n", " Y1 = (a2*borneInf**3)/3 + (b2*borneInf**2)/2 + c2*borneInf\n", @@ -2929,6 +2929,93 @@ " print(\"valeur moyenne pour l'annee \", x, \" : [CO2] = \", format(meanValue, '0.2f'), \" ppm\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour finir, on peut vérifier nos résultats en comparant le fit avec les données réelles pour une année entièrement renseignée, 2019 par exemple." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "733 734 735 736 737 738 739 740 741 742 743 744 \n", + "732 409.23\n", + "743 410.29\n", + "733 744\n", + "[CO2] (moyenne réelle) : \t 411.28\n", + "[CO2] (moyenne fit) : \t 410.31\n" + ] + } + ], + "source": [ + "#calcul avec data\n", + "newBorneInf = (2019-1958)*12+1 \n", + "newBorneSup = newBorneInf + 11\n", + "somme = 0\n", + "for x in range(newBorneInf, newBorneSup+1):\n", + " somme += udc['CO2'][x]\n", + " print(x, end = ' ')\n", + "print(\"\")\n", + "newMean = somme/12\n", + "\n", + "#calcul avec fit\n", + "newY2 = (a2*newBorneSup**3)/3 + (b2*newBorneSup**2)/2 + c2*newBorneSup\n", + "newY1 = (a2*(newBorneInf-1)**3)/3 + (b2*(newBorneInf-1)**2)/2 + c2*(newBorneInf-1) \n", + "# on ne peut pas utiliser la même borne pour une intégration ou une somme ici sans omettre une valeur, d'où le -1\n", + "newMeanValue = (newY2-newY1)/12\n", + "\n", + "print(newBorneInf, newBorneSup)\n", + "print(\"[CO2] (moyenne réelle) : \\t\", format(newMean, '0.2f'))\n", + "print(\"[CO2] (moyenne fit) : \\t\", format(newMeanValue, '0.2f'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le résultat est acceptable, on peut calculer l'erreur relative." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.0023505910290639647" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "erreurRelative = (newMeanValue - newMean)/newMean\n", + "erreurRelative" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "Le but de cette étude était de produire une analyse reproductible de l'évolution de la concentration en CO2 dans l'atmosphère. Les données de base permettent une étude de 1958 à 2020, modulo les données manquantes.\n", + "En utilisant les librairies Pandas et Numpy pour traiter les données, nous avons constaté une croissance globale de la concentration en CO2 d'année en année, couplée à une oscillation de cette concentration avec des maxima autour de Mai et des minima autour de Septembre.\n", + "Nous avons ensuite appliqué 3 fonctions différentes pour trouver une courbe de tendance raisonnable pour notre jeu de données. Le choix s'est fait sur un polynôme de degré 2, qui est un bon compromis car il suit de près les données sans pour autant être trop complexe à traiter.\n", + "Ce fit a ensuite permis d'extrapoler les valeurs moyennes des concentrations en CO2 pour les années 2020 à 2025. Une vérification sur l'année 2019 pour laquelle l'intégralité des données sont disponibles suggère une erreur relative inférieure au pourcent (0.2% en l'occurence), ce qui est semble acceptable.\n", + "Pour compléter cette étude, un travail possible serait de caractériser l'oscillation de la concentration en CO2 dans l'année par une fonction sinusoidale par exemple." + ] + }, { "cell_type": "code", "execution_count": null,