remarques sur piecewise

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

remarques sur piecewise

Message par alb » sam. oct. 23, 2010 12:51 pm

Des résultats que je trouve un peu étonnants:
1)comment interpréter f(x):=piecewise(x<1,2,x<3) et plot(f(x)) ?
2)si g(x):=piecewise(x<1,2,x<3,5) alors plot(g(x)) donne Bad Argument Value

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: remarques sur piecewise

Message par alain974 » dim. oct. 24, 2010 4:12 am

1: Essaye plot(x<3) et tu verras que c'est une fonction (booléenne, la fonction indicatrice de l'intervalle des x<3). Donc avec f(x):=piecewise(x<1,2,x<3) tu définis une fonction f qui est égale

*à 2 si x<1
*à la fonction (x<3) sinon.


C'est donc parfaitement logique (c'est le cas de le dire!) et même pratique, ça permet de raccourcir des programmes sous calculatrices Ti et sous CaRMetal, entre autres...


2: Là par contre, la fonction est mal définie:

*Si x<1, g(x)=2
*si x<3 (mais sans être aussi inférieur à 1), g(x)=5;
*mais si x>3, g(x)=
quoi???

Là-dessus je trouve la syntaxe GeoGebra plus simple, avec ses "Si..Sinon" imbriqués (comme dans les tableurs) mais du coup on s'éloigne un peu de l'algorithmique (?)

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: remarques sur piecewise

Message par alb » dim. oct. 24, 2010 6:14 am

Merci pour ces réponses
1)En effet la courbe est bien constituée de 3 morceaux ce que je n'avais pas remarqué (y=0 reste en rouge)
2)g(x):=piecewise(x<1,2,x<3,5) est correct du point de vue de la syntaxe ? et la courbe est donnée par plot(g(x),x=-5..3)
Le nombre d'arguments de piecewise peut donc être pair ?
Pour anticiper des questions d'élèves:
Pourquoi par exemple plot(sqrt(x-1)) ne nécessite pas de spécifier x=1..10 ?

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: remarques sur piecewise

Message par alain974 » lun. oct. 25, 2010 5:52 am

alb a écrit :2)g(x):=piecewise(x<1,2,x<3,5) est correct du point de vue de la syntaxe ? et la courbe est donnée par plot(g(x),x=-5..3)
Le nombre d'arguments de piecewise peut donc être pair ?
Ah oui:

g(x):=piecewise(x<1,2,x<3,5)

est une fonction correctement définie mais seulement pour x<3. Donc le Bad Argument Value signifierait qu'on a essayé de calculer l'image par g d'un nombre pour lequel elle n'est pas définie. Ce calcul a dû être fait en cachette par Xcas...

Si on fait façon algo:

Code : Tout sélectionner

g(x):={
  
si x<1 alors  
return 2;  sinon 
si x<3 alors 
return 5; 
sinon 
//ici il manque un return pour dire ce qu'on fait si x>=3
fsi;
fsi;
}
Bon, on ne peut même pas compiler ça à cause du vide entre "sinon" et "fsi". Mais on définit ainsi une fonction partielle (http://fr.wikipedia.org/wiki/Fonction_partielle) qui se représente bien graphiquement sur son domaine de définition mais pas ailleurs.

Note: Une fonction n'est pas obligée de retourner quelque chose, puisqu'une procédure est définie comme une fonction qui ne retourne rien...

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: remarques sur piecewise

Message par parisse » lun. oct. 25, 2010 7:21 pm

En complément:
- effectivement piecewise admet aussi un nombre pair d'arguments, dans ce cas il n'y a pas de valeur par défaut (si tous les test échouent), et ca provoque alors un bad arg value si on essaie une valeur de l'argument pour laquelle tous les test échouent
- on peut bien sur aussi définir une fonction par morceaux avec des si alors sinon fsi éventuellement imbriqués
- pour sqrt, une valeur négative ne provoque pas de bas arg value, ça renvoie un complexe, de manière invisible dans plot (qui ne trace que si le résultat est réel) mais sans provoquer de bad arg value.
- une fonction qui n'a pas de return explicite renvoie alors le resultat de la dernière évaluation. Il n'y a pas vraiment de procédure en xcas, une procédure est une fonction dont on ignore la valeur de retour (qui peut ne pas avoir de sens particulier, c'est souvent le cas si on n'a pas mis de return explicite).

Répondre