Graphique sur Sage

Bonjour
J'ai un petit souci sur Sage. Je ne comprends pas pourquoi le graphique en image ne correspond pas aux valeurs de ma fonction.
Merci d'avance,
Al-Kashi

Réponses

  • Lorsque tu invoques plot(f(x)), Sage calcule f(x), où x est un élément du "Symbolic ring",  obtient ainsi une expression symbolique, puis trace cette expression entre $-1$ et $1$ par défaut. Or la condition x>0 est fausse, naturellement (l'indéterminée n'est pas positive), de sorte qu'avec la valeur x, Sage n'entre pas dans la boucle et renvoie la valeur initiale de s, à savoir $0$.
    Voici par contraste le résultat de plot(f) et plot(f,(0,60))...

  • Al-Kashi
    Modifié (March 2023)
    Bonjour MathCoss,
    Merci beaucoup! je commençais à avoir mal au crâne car je ne comprenais pas. Comme tu le vois, je suis toujours un vrai novice sur Sage.
    Bonne soirée,
    Al-Kashi
  • Une façon plus concise d'écrire les affectations.
    sage: def f(x):
    ....:     u = 100
    ....:     v = u
    ....:     s = 0
    ....:     r = x
    ....:     while r>0:
    ....:         s = s+r
    ....:         u = r
    ....:         r-= 1
    ....:         v = u
    ....:     return s
    ....: 
    sage: def g(x):
    ....:     u, s, r = 100, 0, x
    ....:     while r>0:
    ....:         u, s, r = r, s+r, r-1
    ....:     return s
    ....: 
    sage: all(f(k)==g(k) for k in range(1,1000))
    True
    

  • Al-Kashi
    Modifié (March 2023)
    Bonjour MathCoss, 

    C'est en effet bien plus concis. Aurais-tu une bonne référence en ligne pour bien manipuler le logiciel Sage. J'avais imprimé un court pdf pour une prise en main mais je n'y trouve pas par exemple ce que tu m'as signalé pour la fonction plot plus haut.
    Je n'ai pas non plus trouvé la commande qu'il faut utiliser pour représenter ma fonction uniquement sur l'ensemble $\N$ telle une suite.
    Merci d'avance,
    Al-Kashi 
  • Une bonne référence (mais longue !) : Calcul mathématique avec Sage par une brochette d'auteurs.
    L'histoire des affectations provient de Python, pas de Sage, qui permet des syntaxes très compactes, assez naturelles et humainement lisibles. Voici peut-être l'exemple le plus simple (encore une fois, j'utilise Sage mais c'est seulement du Python de base).
    sage: a, b = 3, 7
    sage: print "a = " + str(a) ; print "b = %s" % b
    a = 3
    b = 7
    sage: a, b = b, a
    sage: print "a = " + str(a) ; print "b = %s" % b
    a = 7
    b = 3
    Pour représenter une fonction discrète, voici ce qu'on peut faire. On voit que ça ressemble furieusement à une parabole, on se dit « Tiens, si on trouvait la meilleur parabole qui approxime » et finalement, on subodore que $f(k)=k(k+1)/2$ pour tout $k$.
    sage: def g(x):
    ....:     u, s, r = 100, 0, x
    ....:     while r>0:
    ....:         u, s, r = r, s+r, r-1
    ....:     return s
    ....: 
    sage: list_plot([[k,g(k)] for k in range(1,100)])
    Launched png viewer for Graphics object consisting of 1 graphics primitive
    sage: list_plot([[k,sqrt(g(k))-k/sqrt(2.)] for k in range(1,100)])
    Launched png viewer for Graphics object consisting of 1 graphics primitive
    sage: list_plot([[k,g(k)-k^2/2] for k in range(1,100)])
    Launched png viewer for Graphics object consisting of 1 graphics primitive
    sage: list_plot([[k,g(k)-k^2/2-k/2] for k in range(1,100)]) + text("$k\\mapsto g
    ....: (k)-\\dfrac{k^2+k}{2}$",(70,.3),fontsize="xx-large")
    Launched png viewer for Graphics object consisting of 2 graphics primitives
    sage: all(g(k)==k*(k+1)/2 for k in range(1,10000))
    True
    Au fait, à quoi sert u ? Maintenant que je regarde la fonction... je vois que r diminue de 1 à chaque passage dans la boucle ; que s augmente de r chaque fois. Pour x entier strictement positif, g(x) est donc $\sum_{r=1}^xr$. Pas très étonnant finalement.
  • Al-Kashi
    Modifié (April 2023)
    Bonjour MathCoss
    Merci, c'est exactement ce genre de référence que je cherchais. Pour la variable $u$ en fait, c'est une autre fonction que j’essayais de tracer au départ (avec des divisions euclidiennes) et comme je pensais que le problème d'affichage du graphique était dû à l'utilisation de la commande % pour des réels, j'avais pris une fonction plus simple pour essayer. J'essayerai donc tout ça lundi.
    Bon week-end,
    Al-Kashi
Connectez-vous ou Inscrivez-vous pour répondre.