Expressions avec $O(f(x))$

Bonjour, dans parigp on peut manipuler des développements asymptotiques ce qui est très pratique
sin(x+x^2+O(x^3))*(x+O(x^2))^2
 -->x^3 + O(x^4)
Par contre ça ne marche pas quand on veut dire que $$\zeta(s)=(1+2^{-s})(1+O(3^{-s}))=1+2^{-s}+O(3^{-s}), s \to \infty$$
Avec $x= e^{-s}$ on a $n^{-s}=x^{\log n}$ mais ils n'ont pas non plus implémenté $O(x^a)$ pour $a\in \R$.

Est-ce qu'il y a une raison fondamentale à ça, est-ce qu'on peut faire un programme pour manipuler une large gamme de $O(f(x))$ , ou bien est-ce qu'il faut le coder au cas par cas et réécrire tout le code pour chaque type de $f$ ?

Est-ce qu'il y a d'autres programmes qui permettent de manipuler $g(x)+O(f(x))$, quel type de $f$ ont-ils implémenté ?

Est-ce que ça vous intéresse de trouver le bout de code qui gère $O(x^n)$ (dans $gp$) et voir si il est faisable de l'étendre à $O(x^a)$ et à d'autres $O(f(x))$ ?

Réponses

  • Salut reuns
    Il n'y a rien de spécial au code de gp permettant de gérer ça : ce sont juste des calculs avec des séries de Laurent formelles, qui se ramènent immédiatement à des calculs avec les polynômes et des troncations.

    À partir du moment où tu te fixes une classe de fonctions raisonnables et une limite pour ta variable, je pense qu'il n'y a pas de problème pour implanter d'autres classes de fonctions, dans un langage qui a de bonnes expressions symboliques. Ce n'est pas le cas de gp, qui n'a pas d'expressions symboliques mais seulement des polynômes et des fractions rationnelles, et n'a donc aucun objet permettant de représenter $x^a$ quand $a$ n'est pas un entier.

    Amicalement,
    Aurel
  • Ah oui effectivement $\exp'(x)$ renvoie son développement limité pas $\exp(x)$, et pareil pour $f(x)=(1+x)^{1/2},f'(x)=1+x/2+\cdots+O(x^N)$, donc les fonctions sont représentées comme des troncations de séries entières, ce qui fait qu'il n'arrive même pas à représenter et encore moins à trouver la dérivée de $x^{1/2}$ (il sait calculer $\pi^{1/2}$ mais pas représenter la fonction $f(x)=x^{1/2}$).

    Quel autre logiciel essayer dans ce cas ?
    Mathematica a un bout de code qui fait la même chose https://reference.wolfram.com/language/ref/O.html
    (Sin[x] + O[x]^5)^2
    --> x^2-x^4/3+O[x]^6
    Sin[x^(1/4)] + O[x]^(5/4)
    ---> x^(1/4)-x^(3/4)/6+O[x]^(5/4)
    
    Par contre toujours pas de $O[x]^{\log[3]}$ implémenté correctement.

    Quelqu'un a Mapple pour dire si c'est à peu près pareil ? Quel autre programme essayer ?

    Ce que je me demande c'est si il y un moyen d'implémenter un code assez simple et général, avec une sorte de grammaire de manipulation des $O(f(x))$ où une fois qu'on a défini $O(f(x))+O(f_2(x))=O(f_3(x))$, $O(f(x) f_2(x))=O(f_3(x)), g(O(f(x))=O(h(x))$ pour une certaine classe de $f_j$ on peut faire nos calculs, ce qui permettrait à l'utilisateur d'enrichir la grammaire au moment où il en a besoin.
  • En gp, les fonctions ne sont pas représentées par la troncation de leur série entière (d'ailleurs ça ne les définirait pas de manière unique), mais elles ne sont pas représentées du tout. Quand tu tape $\exp(x)$ dans gp, il cherche à évaluer $\exp$ en $x$ (normal). Si $x$ contient une variable plutôt qu'une valeur, le résultat est par définition une troncation du développement en $x=0$. Si $x$ contient une valeur, le résultat est l'évaluation, qui dépend du type de $x$ (ça marche avec les $p$-adiques par exemple, tu peux tenter $\exp(2^{10} + O(2^{20}))$, ce n'est pas très différent d'une série).

    Ca fait longtemps que je n'ai pas utilisé Maple, mais je pense qu'implanter quelque chose dans le style que tu veux pourrait se faire sur ce logiciel. Il s'agit essentiellement d'implanter une fonction de simplification qui prend en entrée une expression symbolique et qui applique le type de transformation que tu mentionnes.

    Aurel
  • Avec Maple 2018:
    > Order := 2
            Order := 2
    > series(Zeta(s), s = infinity)
            1+1/2^s+O(1/3^s)
    > series(sin(x^(1/4)), x = 0)
            x^(1/4)-(1/6)*x^(3/4)+(1/120)*x^(5/4)-(1/5040)*x^(7/4)+O(x^(9/4))
    > series(sin(x^(1/4))+O(x^(5/4)), x = 0)
            x^(1/4)-(1/6)*x^(3/4)+O(x^(5/4))
    
  • J'ai installé maple (j'utilise sandboxie pour ne pas me soucier de si la version téléchargée contient un virus).

    Mais je ne comprends pas ce qu'il fait, il arrive bien à trouver que $(1+2^{-s}+O(3^{-s}))^2 =1+2^{1-s}+O(3^{-s})$ et que $1/\zeta(s)^2 = 1-2^{-s}-3^{-s}-5^{-s}+O(6^{-s})$ mais il ne comprend pas le produit des deux ni le développement asymptotique de $(1+2^{-s})\zeta(s)$ (en $s=\infty$, ce qu'il demande de préciser)

    C'est un peu comme si dans la même expression il croyait voir plusieurs types de $s$ sans me le dire.
Connectez-vous ou Inscrivez-vous pour répondre.