Canalblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Suivre ce blog Administration + Créer mon blog
MENU

modelisation de systemes gravitationnels

Publicité
1 avril 2014

Ajustement de données, du questionnement à l'écriture du code

              

 

            Depuis la semaine dernière, nous nous sommes rencontrés deux fois. Durant la première rencontre, nous avons travaillé sur la bonne méthode à adopter, sur le plan général de notre programme sur Python. La deuxième a été consacrée a la mise « en code » de notre plan.

1-Le plan

En partant d’une liste de valeurs yi, qui sont censés être approchés par une fonction sinusoïdale, comment le programme python va-t-il donner les valeurs les plus justes en se servant de la méthode des moindres carrés aux quatre paramètres de cette fonction?

h(t) = A.sin(wt + f) + B                   48f88f0e99f72a99701f028d553a687e              

Nous avons choisis la dichotomie. On s’explique: on fixe trois variables, on fais changer la quatrieme d'un certain pas définit "à l'avance" (nous lui ajoutons ou retranchons ce pas). Si S diminue, on sauvegarde la nouvelle valeur de cette variable, si S augmente, nous divisons ce pas par deux pour refaire ulterieurement la meme opération (car il faut appliquer ce procédé aux autres variables).

D'accord, mais quel pas choisir?

Il  faut un pas de départ adapté pour chaque variable de la fonction h(t). Apres quelques tractations, notre choix s'est porté sur les pas de depart suivants:

rappelons nos valeurs de départ des quatre variables:

A = Ymax – Ymin

            Ymax : valeur maximale de « yi »

            Ymin : valeur minimale de « yi »

B = (Ymax + Ymin)/2

w = 1

f = 0

P(B): la difference entre l'ordonnée du premier point de notre échantillon avec la moyenne B du plus grand et du plus petit des points de l'échantillon. P(B)= | y1 - B |

P(A): soit Ym la moyenne générale de tous les points de l'échantillon: Ym= (y1+y2+...+yn)/n. P(A)= | Ym - A |

P(f): soit Xmax et Xmin les abscisses des points maximal et minimal de l'échantillon. P(f)= ( | Xmax - Xmin | ) / 2 

P(w): un taux d'accroissement approximatif, soit P(w)= (Ymax - B) / Xmax

 

Deuxième question: Jusqu'ou aller? Notre professeur (orienté physique) nous dit que l'on peut remplir toute une bibliothèque des livres qui ont été écrits sur l'approximation de fonction, et entre autre, sur le critère qui fait dire "Stop! Ça suffit, nous avons la meilleure fonction..."

 

Etant très limité dans la puissance de calcul (la preuve en a été faite lors du l'approximation de la valeur de pi avec notre professeur orienté informatique), nous avons jugé bon de rajouter un paramètre a notre programme Python que l'on va noter P et qui déterminera le nombre d'itérations du procédé dichotomique. Ce paramètre va nous permettre de disposer d'une échelle de "précision" et d'un critère d'arrêt fixé à l’ avance, ce qui va empêcher toute boucle infinie.

 

 

Récapitulons:  

Notre Programme Python prends comme arguments une liste l et une valeur P, il nous retourne une fonction sinusoïdale et le tracé de sa courbe.

Nous avons besoin:

 

De savoir déterminer, en Python, la valeur maximale et minimale d'une liste et donner les abscisses de ces deux points (ou la valeur prise par n) pour avoir nos: Ymax, Ymin, Ym, Xmax, Xmin. Avec ceux-là nous avons les valeurs initiales et les pas pour chaque variable.

 

D'une fonction "erreur" ou S(B,A,w,f) qui va calculer le reste par les moindres carrés en fonctions des quatre paramètres que nous aurons a changer lors du procédé par dichotomie pour affiner notre courbe.

 

D'une code en python efficace pour pouvoir ajouter ou retrancher le pas a une variable jusqu'a ce que cette opération ne réduise plus l'erreur, dans ce cas, diviser le pas en deux, passer aux autres variable (qui ont un pas diffèrent),sauvegarder a chaque fois la meilleure valeur pour chaque variable, faire la même opération P fois.

De savoir retourner la courbe sinusoïdale de la fonction obtenue.

 

2-Le code

(l est la liste des ordonnée, v est la liste des abcisses), nous n'avons pas inclus le tracé de la courbe finale et des points provenants des données experimentales)
 


import matplotlib.pyplot as plt

largeur= len(l)


def absmax (l):
Xmax=0
Ymax=max(l)
while l[i]<Ymax:
Xmax= Xmax+1
Xmax= v[Xmax]
return Xmax,Ymax

def absmin (l):
Xmin=0
Ymin=min(l)
while l[i]>Ymin:
Xmin= Xmin+1
Xmin= v[Xmin]
return Xmin,Ymin


def Somme(B,A,w,f):
u = 0
i = 0
for i in range(0,largeur):
u = (l[i]-(B + A *sin(wt + f))) ** + u
return u




def moindrecarre(l,P):
A =Ymax-Ymin
B =(Ymax+Ymin)/2
w = 1
f = 0

for i in range(0,P):

ajustement= Somme(B,A,w,f)

plusB= Somme(B+PB,A,w,f)
moinsB=Somme(B-PB,A,w,f)

plusA= Somme(B,A+PA,w,f)
moinsA=Somme(B,A+PA,w,f)

plusw= Somme(B,A,w+Pw,f)
moinsw=Somme(B,A,w+Pw,f)

plusf= Somme(B,A,w,f+Pf)
moinsf=Somme(B,A,w,f+Pf)

if plusB<ajustement:
while plusB<ajustement:
B=B+PB

elif moinsB<ajustement:
while moinsB<ajustement:
B=B-PB
else:
PB=PB/2
if plusA<ajustement:
while plusA<ajustement:
A=A+PA
elif moinsA<ajustement:
while moinsA<ajustement:
A=A-PA
else:
PA=PA/2
if plusw<ajustement:
while plusw<ajustement:
w=w+Pw
elif moinsw<ajustement:
while moinsw<ajustement:
w=w-Pw
else:
Pw=Pw/2
if plusf<ajustement:
while plusf<ajustement:
f=f+Pf
elif moinsf<ajustement:
while moinsf<ajustement:
f=f-Pf
else:
Pf=Pf/2
return B,A, w,f

 

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

Publicité
25 mars 2014

Ajustement de données, état d'avancement des recherches

Méthode analytique ou brute-force? Telle est la question…

Depuis la deuxième semaine de travail sur le projet d’ajustement de données et la discussion avec nos deux professeurs qui fut fort productive, nous nous sommes penchés sur la méthode la plus efficace à mettre en place pour approcher des données « approximatives » ou bruités avec une fonction sinusoïdale.

Pourquoi sinusoïdale en particulier ? Parce que nous avons décidés de nous concentrer sur les donnés de nos camarades physiciens qui travaillent sur le déplacement d’étoiles lointaines pour la détection d’exo planètes, qui sont comme nous l’avons vu durant une des séances, « ajustables » en courbes périodiques dont l’analyse est primordiale pour débusquer nos ‘futurs coins de Paradis’…  

Notre programme Python devra, en fonction d’un certain nombre de points, nous donner une courbe qui se rapproche le plus de ces derniers.    

Voici, grosso modo ce que nous souhaitons avoir :

 

Marée et courbe sinusoïdale       

                                        

Heure par heure, la hauteur d'eau dans le port français de Saint-Malo

 

 malo_s11

Les eaux s'élèvent et s'abaissent chaque jour à intervalles réguliers avec des amplitudes variables en vertu , d'une part de l'attraction de la Lune et du Soleil, d'autre part de la nature des fonds marins: toutes les 12 h 25', le niveau de la mer monte puis redescend car la Lune passe dans le plan du méridien local toutes les 24 h 50'.

La hauteur d'eau est un phénomène assimilable sur chaque tranche d'environ 24 heures, à une loi périodique sinusoïdale, c'est à dire régie par une fonction de la forme :

h(t) = A.sin(wt + f) + B

 

  MaloSinus2

(Source : http://serge.mehl.free.fr/anx/malo_sinus.html)

 

Analysons cette fonction :

A : amplitude de la grandeur, appelée aussi valeur de crête

w: pulsation de la grandeur

f: phase à l'origine

B : hauteur de la courbe

 

Il nous faut donc un programme qui détermine les valeurs de ces quatre paramètres pour nous donner la « meilleure » courbe possible. C’est à ce moment la qu’intervient la fameuse ‘méthode des moindres carrés’…

L’objectif est de minimiser ça :

 

 48f88f0e99f72a99701f028d553a687e

 

 

[La méthode consiste en une prescription (initialement empirique), qui est que la fonction qui décrit « le mieux » les données est celle qui minimise la somme quadratique des déviations des mesures aux prédictions de . Si, par exemple, nous disposons de N mesures , les paramètres « optimaux » au sens de la méthode des moindres carrés sont ceux qui minimisent la quantité :

 

 le modèle théorique est une famille de fonctions d’une ou plusieurs variables muettes x, indexées par un ou plusieurs paramètres inconnus. La méthode des moindres carrés permet de sélectionner parmi ces fonctions, celle qui reproduit le mieux les données expérimentales.] (Source : Wikipedia)

Tout en sachant que note nuage de points peut ressembler a ça :

 posy

(Données sismiques, source : http://forum.reopen911.info/viewtopic.php?id=1075&p=25)

 

Apres quelques débats très animés, nous avons décidé de

  • déterminer analytiquement une valeur approchée de A (l’amplitude) que le programme va affiner, en calculant :

A = Ymax – Ymin

Ymax : valeur maximale de « yi »

Ymin : valeur minimale de « yi »

 

  • de même pour B (hauteur de la courbe) :

B = (Ymax – Ymin)/2

 

  • fixer des valeurs de départ approximatives des deux autres :

w = 1

f = 0

 

 

Algorithme « Brute force »

 

L’idée :

Avec ces valeurs de départ, le programme va fixer trois d’entre elles, augmenter ou diminuer la quatrième et voir si S augmente ou diminue. Dans le premier cas, il doit changer d’opération (s’il ajoutait, il doit retrancher), dans le deuxième cas, sauvegarder la nouvelle valeur, recommencer l’opération avec les autres valeurs.

 

Les questions :

Quel « pas » fixé? Doit changer en fonction de l’affinement ? Et si oui, comment ?  

 

17 mars 2014

Compte-rendu de la semaine sur le projet

Lors de la séance hebdomadaire d'ARE, nous avons choisi le projet "Ajustement de données", sujet traitant majoritairement d'informatique. Nous devrons à l'aide de Python, créer un code nous permettant de lire des données (mesure d'exoplanètes), de les ajuster, et d'afficher un graphique cohérent et en adéquation avec le phénomène étudié. 

Cette semaine, nous avons fait des recherches concernant la méthode des moindres carrés. C'est une méthode très utile qui permet de transformer des données expérimentales en un graphique suivant un modèle mathématique adapté, en réduisant la marge d'erreur. On veut donc par cette méthode trouver la fonction qui décrit le mieux les mesures. Pour cela, il faut ajuster les paramètres d'une fonction y= f(x) afin que sa courbe représentative passe au plus près des données mesurées.   Pour avoir une courbe comme telle, il faut que la fonction réponde à la formule suivante: 

 S(\theta) = \sum_{i=1}^N \left(y_i - f(x_i;\theta)\right)^2 = \sum_{i=1}^N r^2_i(\theta)      avec f(x,θ) famille de fonctions, ri(θ) résidus du modèle et S(θ) la "distance" entre les données expérimentales et le modèle. Il faut que S(θ) soit minimal.

Pour une fonction sinusoïdale, les paramètres à modifier sont la phase, l'amplitude et la pulsation.

 

11 février 2014

Et pourtant elle bouge ! (Tchambaz Ibrahim)

  

1-Réponse aux questions sur le "dialogue sur les deux principaux systemes du monde de Galilée" (1632)

 

1-1 Découpage cohérent du texte en 4 parties en indiquant leur sujet principal :

 

  • La souveraineté de l'intelligence spéculative :

De « Galilée : Le grand livre de la nature...» à « ...monsieur Giovan Francesco Sogredo, de noble naissance et esprit subtil, libre penseur. ».

Introduction au débat par Galilée, il expose sa vision de la nature et de l'astronomie, il explique les raisons qui l'ont mené a l’écriture du dialogue, présentation des personnages.

 

  • Les raisons particulière et les expériences sensibles :

De « Sagredo : Cher Salviati, vous m'avez convaincu. » à « Ce sont leurs mouvements propres et naturels. ».

Remise en cause de la théorie d'Aristote qui se veux basé sur l'observation: défense du philosophe Simplicio du mouvement propre des corps célestes.

 

  • La contre-attaque de Sagredo :

De « Sagredo : Cependant... » à « ...elles bougeronssans besoin de recevoir aucun mouvement de l'exterieur !!! ».

Le libre penseur montre l’incohérence des mouvements propres du zodiaque par la théorie du « premier mobile » appliquée a la Terre.

 

  • Une théorie très « probable »

De « Simplicio : (inquiet) Il faudrait... » à « ...avec des expériences sensibles aussi claires ! ».

Monsieur Simplicio est finalement convaincu comme le prévoyais Filippo Salviati (incarnant les idées de Galilée). Ce dernier le rassure quant au fait que ce n'est qu'une théorie, théorie qui a cependant « des raisons ayant quelques probabilités d’être verifiées ». Il souligne aussi que grâce a la lunette astronomique (perfectionnée par Galilée), nos observations, nos « experiences sensibles »  pour reprendre les mots d'Aristote sont plus justes qu'à l’époque du philosophe athénien, elles valident 'probablement' le système Copernicien.

 

1-2 Chronologie des différents personnages et événement scientifiques indiqués dans le texte

  • Aristote (384 av. J.-C: naissance à Stagire - 322 av. J.-C: mort à Chalcis)

Aristote pensait qu'en-dessous de la lune, sur la Terre ( monde infralunaire) tout n'était pas parfait : des personnes, des créatures, des animaux... naissaient et mouraient, alors qu'au-dessus de la Lune, (monde supralunaire) tout était parfait car c'était le domaine des Dieux.

Aristote place la Terre au centre de l’Univers. Pour expliquer que parfois certaines planètes semblent revenir en arrière puis reprennent leur course en avant, Aristote imagine qu’elles tournent sur des roues appelées épicycles qui tournent sur une grande roue appelée déférent centrée sur la Terre. La rotation simultanée des deux roues produit un mouvement rétrograde.

  • Nicolas Copernic (1473: naissance à Torun - 1524: mort à Frombork

Dans le Commentariolus composé vers 1510 et resté inédit de son vivant, Copernic énonçait un certain nombre de propositions proprement absurdes:

"Tout mouvement qui paraît appartenir à la sphère des étoiles ne provient pas d’elle, mais de la terre. La terre, donc, accomplit d’un mouvement diurne une révolution complète, tandis que demeure immobile la sphère des fixes ou ciel ultime. Les mouvements qui nous paraissent appartenir au soleil ne proviennent pas de lui, mais de la terre avec laquelle nous effectuons des révolutions autour du soleil comme n’importe quelle autre planète."

  • 24 février 1616: Proclamation à Rome d'un decret imposant le silence sur l'opinion pythagoricienne de la mobilité de la terre:

Après cette décision par laquelle les gardiens romains de la doctrine de la foi s’étaient autoproclamés juges d’une question cosmologique, l’issue qui conduirait Galilée devant le Tribunal de l’Inquisition à cause du Dialogue sur les deux plus grands systèmes du monde — pourtant publié avec les autorisations ecclésiastiques requises — était pour ainsi dire inéluctable. 

 

1-3 Système solaire vu par Aristote, et par Copernic

 

            Aristote pensait qu'en-dessous de la lune, sur la Terre ( monde infralunaire) tout n'était pas parfait : des personnes, des créatures, des animaux... naissaient et mouraient, alors qu'au-dessus de la Lune, (monde supralunaire) tout était parfait car c'était le domaine des Dieux.

Pour expliquer que parfois certaines planètes semblent revenir en arrière puis reprennent leur course en avant, Aristote imagine qu’elles tournent sur des roues appelées épicycles qui tournent sur une grande roue appelée déférent centrée sur la Terre. La rotation simultanée des deux roues produit un mouvement rétrograde.

 

 

          Au 16e siècle, Copernic rompt avec le géocentrisme de l’Antiquité. Il met le Soleil au centre du système solaire et de l’Univers tout entier et l’entoure d’une sphère d’étoiles fixes. Son traité De Revolutionibus parait en 1543. Malgré la prudence de sa préface, qui précise que le système héliocentrique est un simple modèle mathématique permettant d'améliorer les calculs, l'ouvrage fait gronder les Eglises catholiques et protestantes. Malgré quelques précurseurs, comme Aristarque de Samos, on attribue en général le principe de l'héliocentrisme à Copernic.

Le système héliocentrique de Copernic NicolausCopernic(1473 – 1543) Au 16e siècle, Copernic rompt avec le géocentrisme de l’Antiquité. Il met le Soleil au centre du système solaire et de l’Univers

 

2-Rôle de la lunette astronomique



      Faute d’argent et afin de mener à bien ses propres expériences, Galilée entreprend la construction d’une lunette en Mai 1609. Fabricant lui-même ses lentilles, il arrive à un grossissement de l’image de six fois sans aucune déformation. Puis une deuxième lentille grossissant neuf fois. Fort de cette réussite, il soumet son invention en août de la même année aux sénateurs de la république de Venise qui, totalement séduits, y voient déjà une utilité militaire … Mais pour Galilée, la vocation de cet outil n’était pas d’observer l’horizon, mais le ciel.
C’est ainsi qu’en 1610, il est le premier être humain à explorer un univers alors inconnu de son œil …   Et il découvre les quatre premiers satellites de
Jupiter !
Galilée n'est pas à proprement parler le premier inventeur de la lunette au sens optique du terme, car les verres correcteurs de la vue existent depuis déjà longtemps, et les propriétés optiques des lentilles (comme la réfraction de la lumière) sont déjà l'objet d'études parmi les scientifiques (Kepler rédige l'ouvrage
Ad Vittelionem paralipomena en 1604). Il en reste que c'est toutefois Galilée qui le premier construit son tube et lui donne une utilité purement scientifique et dédiée à l'observation du ciel

(source :http://www.astropolis.fr/articles/Biographies-des-grands-savants-et-astronomes/Galilee/astronomie-galileo-galilei-galilee.html)

Les observations de Galilée avec sa lunette astronomique : Les étoiles, le relief lunaire, les phases de Venus, Le ballet des satellites de Jupiter, les taches solaires, les anneaux de Saturne...



3-quelques raisons de l'adoption du système copernicien

             La science progresse en corrigeant les erreurs des anciens. Il faut toujours adapter, modifier les théories connus pour les faire correspondre au mieux aux observations actuelles, aux données sensibles. Ce fut le cas avec la théorie de Copernic qui a été adoptée non parce qu'elle était prouvée de A à Z (la gravité de Newton viendra bien après) mais parce qu'elle correspondait le plus à ce que voyaient les astronomes.

"Si d’aventure il se trouve de vains discoureurs qui, tout en étant totalement ignorants des mathématiques, prétendent néanmoins juger de ces matières, [et] qui, en raison de tel ou tel passage de l’Écriture malignement détourné dans le sens de leur opinion, osent blâmer et attaquer mon ouvrage, eh bien! je ne me soucie aucunement d’eux; mieux même, je méprise leur jugement comme téméraire. On n’ignore pas, en effet, que Lactance par ailleurs célèbre écrivain mais piètre mathématicien, parle d’une façon tout à fait puérile de la forme de la terre, lorsqu’il tourne en dérision ceux qui ont enseigné que la terre a la forme d’un globe. C’est pourquoi les savants ne doivent pas s’étonner si de tels gens nous tournent aussi en dérision. Les mathématiques sont écrites pour les mathématiciens [...]" (Copernic)

 

 

Tchambaz

Ibrahim

Publicité
modelisation de systemes gravitationnels
Publicité
Archives
Publicité