Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mooc-rr
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
d682078cda52034c5c9de3f5af638a6f
mooc-rr
Commits
23856f0d
Commit
23856f0d
authored
Nov 28, 2020
by
MigAP
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add model for slow contribution
parent
a17d8f41
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
4 deletions
+59
-4
exercice_python_fr.org
module3/exo3/exercice_python_fr.org
+59
-4
No files found.
module3/exo3/exercice_python_fr.org
View file @
23856f0d
...
@@ -134,9 +134,10 @@ les oscillations rapides observés précédément.
...
@@ -134,9 +134,10 @@ les oscillations rapides observés précédément.
#+RESULTS:
#+RESULTS:
[[file:zoomRawData.png]]
[[file:zoomRawData.png]]
Sur cette figure on met plus en évidence le
s oscillations rapides
sur
Sur cette figure on met plus en évidence le
phénomène périodique
sur
le niveau de concentration de CO2. D'après la figure, dans un premier
le niveau de concentration de CO2. D'après la figure, dans un premier
temps supposer que les oscillations ont une période de un ans.
temps supposer que les oscillations ont une période de un an et une
amplitude entre cinq et sept.
* Analyse fréquentielle de la variation de la concentration de CO2.
* Analyse fréquentielle de la variation de la concentration de CO2.
#+begin_src python :results file :session :var matplot_lib_filename="dataFFT.png" :exports both
#+begin_src python :results file :session :var matplot_lib_filename="dataFFT.png" :exports both
...
@@ -225,7 +226,9 @@ précédemment.
...
@@ -225,7 +226,9 @@ précédemment.
#+RESULTS:
#+RESULTS:
[[file:smallOsillations.png]]
[[file:smallOsillations.png]]
** Reconstruction du signal : petites oscillations
** Reconstruction du du phénomène périodique
L'objectif est de déterminer l'amplitude des oscillations en prenant
en compte toutes les mesures.
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillationsTime.png" :exports both
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillationsTime.png" :exports both
smallFreqSignal = smallNorm*np.exp(1j*concentrationFFTAngle)
smallFreqSignal = smallNorm*np.exp(1j*concentrationFFTAngle)
...
@@ -244,7 +247,6 @@ précédemment.
...
@@ -244,7 +247,6 @@ précédemment.
[[file:smallOsillationsTime.png]]
[[file:smallOsillationsTime.png]]
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillationsTimeZoom.png" :exports both
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillationsTimeZoom.png" :exports both
plt.figure(figsize=(10,5))
plt.figure(figsize=(10,5))
plt.plot(t,smallSignal)
plt.plot(t,smallSignal)
...
@@ -324,5 +326,58 @@ signal périodique avec \(t\) en semaine on a :
...
@@ -324,5 +326,58 @@ signal périodique avec \(t\) en semaine on a :
s_p(t) = 5 \cos (0.02 t)
s_p(t) = 5 \cos (0.02 t)
\end{equation}
\end{equation}
** Contribution lente du signal
L'analyse fréquentielle nous a pas permis d'avoir plus d'information
quant à la contribution lente du signal. Cependant si l'on regarde
l'allure générale des données peut supposer dans un premier temps que
le concentration de CO2 varie de façon quadratique par rapport au
temps. Donc on va modéliser cette contribution lente par un polynôme
d'ordre deux \( y(t) = at^2 +bt +c \). On utilisera un outil de /curve
fitting/ pour caractériser ce polynôme.
Compte tenu de la modélisation du phénomène périodique, celui-ci
possède une valeur moyenne nulle. Or les outils de /curve fitting/
calculent la norme deux de l'erreur entre le modèle et les données,
donc il est inutile de filtrer les données brute pour tenter d'enlever
le phénomène périodique pour caractériser la contribution lente.
Dans un premier temps on définit une fonction de notre modèle pour la
contribution lente
#+begin_src python :results silent :session :exports both
def slowContributionModel(t,a,b,c):
return a*t*t + b*t + c
#+end_src
Puis l'on utilise le module =scipy= plus spécifiquement le module
=scipy.optimize= pour déterminer les paramètres de notre modèle.
#+begin_src python :results output :session :exports both
from scipy import optimize
params, params_covariance = optimize.curve_fit(slowContributionModel,t,co2, p0=[1, 1, 1])
print("Parameters :\t",params)
print("Parameters covariance :\t", params_covariance)
#+end_src
#+RESULTS:
: Parameters : [4.83379437e-06 1.54227807e-02 3.15061312e+02]
: Parameters covariance : [[ 2.85416803e-15 -9.05056674e-12 4.78171606e-09]
: [-9.05056674e-12 3.06138429e-08 -1.81982548e-05]
: [ 4.78171606e-09 -1.81982548e-05 1.44289419e-02]]
Finalement on compare le modèle obtenu avec les données des mesures :
#+begin_src python :results file :session :var matplot_lib_filename="modelBigOsillations.png" :exports both
co2Model = slowContributionModel(t,params[0], params[1], params[2])
plt.figure(figsize=(10,5))
plt.plot(t,co2,label="Measures")
plt.plot(t,co2Model,label="Model")
plt.legend()
plt.tight_layout()
plt.savefig(matplot_lib_filename)
matplot_lib_filename
#+end_src
#+RESULTS:
[[file:modelBigOsillations.png]]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment