Calcul du sinus par Apollo 11

Ludwig
Modifié (April 2022) dans Histoire des Mathématiques
Bonsoir,
Dans le livre "La géométrie élémentaire d'Euclide à aujourd'hui" d'Yves Coudène on trouve une bien curieuse formule, celle utilisée par l'ordinateur de bord de la mission Apollo 11 pour calculer le sinus. La voici : $$\frac{1}{2} \; \operatorname{sin} \left( \frac{1}{2} \; \pi  \; x \right)  \approx C_{52} \; x^{5} + C_{32} \; x^{3} + C_{12} \; x$$ avec $C_{52}=0.0363351$, $C_{32}=-0.3216147$ et $C_{12}=0.7853134$.
L'implémentation originelle est disponible en ligne ici, où l'on peut retrouver la valeur de ces trois constantes. Ce que je trouve bizarre c'est que ces constantes différent quand même pas mal de celles correspondant au développement limité à l'ordre 5 de la fonction en $0$ : $$\frac{1}{2} \; \operatorname{sin} \left( \frac{1}{2} \; \pi  \; x \right)  \approx0.03985 \; x^{5} - 0.32298 \; x^{3} + 0.7854 \; x$$ Pourquoi ? Serait-ce que les trois constantes utilisées par Apollo étaient plus faciles à stocker sous cette forme (décomposition binaire moins coûteuse) ? (non sûrement pas)

Réponses

  • Bonsoir,

    Il faudrait savoir sur quel intervalle cette approximation a été utilisée sur Apollo 11, et peut-être aussi avec quelle définition d'erreur.

    Cordialement,
    Rescassol

  • Héhéhé
    Modifié (April 2022)
    La formule de Taylor donne évidemment la meilleure approximation polynomiale de degré donné en un point (mais contrairement à ce qu'on pense, les développements limités style Taylor ne sont pas tellement utilisés pour l'évaluation numérique des fonctions usuelles, il y a plus performant, voir par exemple l'algorithme CORDIC).

    Par contre, en dehors d'un voisinage de ce point, l'approximation peut être très mauvaise.

    L'explication à ta question se trouve ici : les coefficients ont été choisis pour minimiser l'erreur quadratique sur $[-\pi/2,\pi/2]$ entre le sinus et un polynôme d'ordre 5.


  • Héhéhé
    Modifié (April 2022)
    On peut même s'amuser à tracer ça pour comparer.
    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(0, np.pi/2, 200)
    
    taylor = np.pi**5/7680*x**5 - np.pi**3/96*x**3 + np.pi/4*x 
    appolo = 0.0363351*x**5 - 0.3216147*x**3 + 0.7853134*x
    
    plt.figure(figsize=(10,10))
    plt.plot(x, np.sin(np.pi/2*x)/2, 'r', label='sinus')
    plt.plot(x, taylor, 'k', label='Taylor')
    plt.plot(x, appolo, 'b', label='Appolo') 
    plt.legend()
    et voilà le résultat:

  • Oui Rescassol, mais ce n'est pas précisé dans le livre, où les constantes sont rapprochées des coefficients du développement limité. Merci Héhéhé pour ce lien et ton graphique. J'ai tracé pour y voir plus clair les différences entre la fonction $\frac{1}{2} \; \operatorname{sin} \left( \frac{1}{2} \; \pi  \; x \right)$ et ces deux approximations (en rouge Taylor) : 



    Proche de $0$ Taylor est gagnant (évidemment). Sur l'intervalle $[-1,1]$, globalement, c'est Apollo 11 qui l'emporte. Je dis "globalement" car sur ton lien il n'est pas tout à fait dit que les coefficients Apollo ont été choisis pour minimiser l'erreur quadratique, mais que ces coefficients sont plus proches que ceux de Taylor des coefficients quadratiques optimaux, ce qui n'est pas tout à fait pareil. Pas sûr que ce soit cette optimisation-là qui a été choisie donc, car sinon pourquoi n'auraient-ils pas implémanté les bonnes constantes ?
  • Sur la page de Stackexchange donnée par héhéhé, il est dit que la méthode vient de C. Hastings, Approximations for Digital Computers. Princeton University Press, 1955, si l'on se fie à un commentaire dans le code source.





  • On peut aussi regarder la formule de Bhaskara
    e.v.
    Personne n'a raison contre un enfant qui pleure.


  • Ce n'est pas la formule de Bhaskara. La méthode provient bien du livre de Hastings (en tous cas les constantes y sont), voir le fichier ci-dessous (le livre est sur le net). Elle n'y est pas expliquée spécifiquement, mais d'autres le sont. Alors est-elle basée sur des résolutions de systèmes linéaires (partie 1) ou bien utilise-t-elle les polynômes de Tchebychev ? Je n'ai pas encore trouvé.


  • Bonjour

    sur l'intervalle [-pi /2 , pi/2 ] ,
    le polynôme P = 0.03140845083*x^5 - 0.3138423095*x^3 + 0.7829360218*x
    est meilleur (au sens de l'erreur quadratique) que celui proposé.

    comme Ludwig , je dessine la différence entre les polynômes et la fonction sinus :
    en vert, la différence entre sinus et le polynome d' Apollo 11, 
    en rouge, celle avec le projeté orthogonal P sur le sous-espace vectoriel engendré par les 6 premiers polynôme de Legendre.
     
  • Ludwig
    Modifié (April 2022)
    Merci leon1789. Recherche Google : mots-clés : Cecil Hastings Apollo sine calcul >>
    http://jeanmariechauvet.com/papers/curttrig.html

Connectez-vous ou Inscrivez-vous pour répondre.