Figure Scilab

Bonsoir,
Pour une première expérience avec Scilab, j'observe un comportement que je ne m'explique pas.
J'ai entré :
x = linspace (0, 2, 100);
plot2d(x, 1/(1+x))
Je m'attendais à voir représenté le graphe de la fonction $x \mapsto 1/(1+x)$ sur l'intervalle $[0; 2]$. Or j'obtiens la figure ci-jointe.
Quelqu'un a une explication ?79928

Réponses

  • Il faut utiliser une "division pointée" (./) puisque x est un tableau : plot2d(x,1 ./(1+x)) (et ne pas oublier l'espace entre le 1 et le . sinon cela peut être interprété par 1.0/(1+x))
  • Merci beaucoup, guiguiche, ça marche!

    Comme tu as l'air de t'y connaître, as-tu un document à me conseiller pour apprendre les bases?
  • Il doit y avoir des documents de ci de là sur le net. Personnellement, je me contente de l'aide en ligne du logiciel puisque cela suffit la plupart du temps à répondre à mes interrogations de syntaxe/commande pour le peu dont j'ai besoin.
  • Je continue à avoir des soucis avec les graphiques en Scilab.
    Maintenant, je définis une fonction par cas:
    function y = h(x), if x <= 1/2 then y = 2*(4-1)*(x-1/2+1/8) else y = 2* (1-4) *(x-1/2-1/8) end, endfunction
    

    h(1/4) renvoie -0.75. Mais lorsque je demande son graphe:
    y=h(x)
    plot2d(x, y)
    
    j'obtiens le graphe suivant:80674
  • Bonjour

    Ton code pour la fonction ne fonctionne pas chez moi, il manque des virgules (mais j'imagine que tu les as écrites puisque tu as eu un résultat pour h(1/4)).
    Sinon, pour ton graphique, si on ne connait pas ce que tu as mis dans x difficile de t'aider, bien que j'imagine que tu aies écrit :
    x=[0,1]
    
    (seulement deux valeurs pour x donc deux points d'où le segment tracé)
    Peut-être voulais-tu écrire :
    x=[0:0.1:1]
    
    (ou tout autre pas d'incrémentation que 0.1)
    ou encore
    x=linspace(0,1,101)
    
    (pour 101 points)
  • Merci, Alain, pour ta réponse. J'ai bel et bien écrit
    x=linspace(0,1,100)
    

    Quant à h, ce que j'ai retranscrit est exactement un copier-coller de ce que j'ai entré dans Scilab, et ça fonctionne au sens où je n'ai aucun message d'erreur (voir la figure ci-jointe). Si, en ajoutant des virgules, tu obtiens un résultat différent, pourrais-tu retranscrire ton propre code?80708
  • En effet, je n'avais pas testé l'affichage de la courbe et j'obtiens la même que la tienne. Je remplace donc :
    y=h(x)
    
    par
    y=feval(x,h)
    
    qui évite ton désagrément (je ne sais pas exactement ce qui a été calculé dans ton cas).

    Personnellement, je travaille très peu dans la console, j'utilise l'éditeur Scinotes et j'écris sous la forme:
    function y=h(x)
        if x <= 1/2 then
            y=2*(4-1)*(x-1/2+1/8)
        else
            y=2*(1-4)*(x-1/2-1/8)
        end
    endfunction
    x=linspace(0,1,101) ; y=feval(x,h) ; plot2d(x,y)
    
    (en plus, je préfère les ; au , comme séparateurs de commandes).

    Edit : tu peux même remplacer les commandes y=.. et plot2d... par la seule commande :
    fplot2d(x,h)
    
  • Merci beaucoup! Ca marche effectivement en utilisant feval et SciNotes! En revanche, le même code (avec feval) dans la console me donne toujours le mauvais graphe. Je ne comprends pas pourquoi, mais dorénavant j'éviterai la console.
Connectez-vous ou Inscrivez-vous pour répondre.