papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Calcul du périmètre de l’ellipse Dim 14 Avr 2019 - 20:50 | |
| Suite à une discussion sur le calcul du périmètre de l’ellipse sur un post de JL35, je vous propose ce code. - Code:
-
rem ============================================================================ rem Calcul du périmètre de l’ellipse rem ============================================================================ ' Paramètres de l'ellipse : ' dim a,b : ' respectivement demi-grand axe et demi-petit axe de l'ellipse ' dim f : ' focale = sqr(a*a - b*b) ' dim h : ' rapport = ((a-b)*(a-b)) / ((a+b)*(a+b)) ' dim e : ' excentricité = sqr((1-(b*b)/(a*a))) ' dim s : ' aire = pi*a*b ' dim p : ' périmètre = ?????? rem ============================================================================ rem Le calcul du périmètre de l’ellipse n’est pas une chose facile. rem La formule de la valeur exacte est une intégrale elliptique du second ordre. rem Elle est transcendante et n’a pas de solution analytique. rem On la calcule par intégration numérique ou par approximations rationnelles. rem rem Pour une ellipse donnée par son équation paramètrique : rem __________________ rem | | rem | x = a * cos(t) | rem | y = b * sin(t) | rem | 0 <= t <= 2*pi | rem |__________________| rem rem La formule exacte qui donne le périmètre est : (elle n’est pas facile à calculer) rem ________________________________________________________________________ rem | | rem | p = 4*a*intégrale de 0 à pi/2 de la racine carrée de (1-e²*sin²t) dt | rem |________________________________________________________________________| rem rem ============================================================================ rem Heureusement, il existe plusieurs approximations de la circonférence de rem l’ellipse dont celle de Ramanujan qui donne une très bonne appoximation. rem rem __________________________________________________ rem | | rem | Formule de Ramanujan : | rem | | rem | p = pi * (3*(a+b) - sqr((3*a+b) * (a+3*b))) | rem |__________________________________________________|
rem ============================================================================ dim t$ dim a,b ' Application : ' Calcul de la longueur du méridien terrestre par les différentes formules avec a = 6378137 : ' Rayon à l'équateur terrestre. b = 6356752.3141 : ' Rayon au pôle. application_title "Calcul du périmètre de l’ellipse" rem ============================================================================ t$ = "Approximation de Ramanujan :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Ramanujan(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
t$ = "Approximation de Kepler :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Kepler(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
t$ = "Approximation de Sipos :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Sipos(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
t$ = "Approximation naïve :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Naive(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
t$ = "Approximation de Peano :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Peano(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
t$ = "Approximation d'Euler :" + chr$(13) t$ = t$ + "Longueur calculée du méridien terrestre : " t$ = t$ + str$(Circonference_Ellipse_Euler(a,b)) + " m" + chr$(13) t$ = t$ + "Longueur réelle du méridien terrestre : 40007862.9164813 m" Message t$
terminate rem ============================================================================ ' Très bonne approximation FNC Circonference_Ellipse_Ramanujan(a,b) result pi * (3*(a+b) - sqr((3*a+b) * (a+3*b))) END_FNC rem ============================================================================ ' C'ést la 1ère approximation utilisée par Johannes Kepler FNC Circonference_Ellipse_Kepler(a,b) result 2*pi*sqr(a*b) END_FNC rem ============================================================================ ' Meilleure approximation que celle de Kepler FNC Circonference_Ellipse_Sipos(a,b) dim_local n,d n = (a+b) : n = n*n d = sqr(a)+sqr(b) : d = d*d result 2*pi*(n/d) END_FNC rem ============================================================================ ' Approximation naïve mais meilleure que celle de Kepler FNC Circonference_Ellipse_Naive(a,b) result pi*(a+b) END_FNC rem ============================================================================ ' Très bonne approximation FNC Circonference_Ellipse_Peano(a,b) result pi*(3*(a+b)/2 - sqr(a*b)) END_FNC rem ============================================================================ FNC Circonference_Ellipse_Euler(a,b) result pi * sqr(2*(a*a+b*b)) END_FNC rem ============================================================================
| |
|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Calcul du périmètre de l’ellipse Lun 15 Avr 2019 - 15:48 | |
| Merci Papydall pour ce cours ! Si vous avez un problème avec les maths, suivez la flèche ! | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Calcul du périmètre de l’ellipse Lun 15 Avr 2019 - 17:49 | |
| Merci Marc. Ça fait plaisir de voir le nom de sa petite ville sur une photo ! Quant à trouver chaussures à ses pieds (je veux dire solution à son problème de maths) au bout de la flèche, c’est un autre problème. | |
|
Contenu sponsorisé
| Sujet: Re: Calcul du périmètre de l’ellipse | |
| |
|