Bonjour,

J'ai écrit le code suivant afin de définir une fonction par morceaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
function y=f(x)
    if (x>=-3)&(x<=0) then
        y=exp(x)-1;
    elseif (x>0)&(x<=3) then
        y=x.*log(x);
    end;
endfunction
Je ne comprends pas pourquoi certains appels à la fonction génèrent une erreur ("Undefined variable 'y' in function 'f'.").
Appels à la fonction qui ne génèrent pas d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
f(0)
f(-1)
f(1:0.1:3)
f(-2:0.1:-1)
f([-1,-2])
f([1;2])
f(0.3:0.1:3)
f(0.4:0.1:3)
Appels à la fonction qui génèrent une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
f([-1,2])
f([-1;2])
f(0.1:0.1:3)
f(0.2:0.1:3)
Au vu de l'erreur, on dirait que dans certains cas aucun des deux tests n'est évalué à true d'où pas de variable de sortie définie. D'ailleurs, ajouter une ligne fait que l'on n'a plus l'erreur en sortie (mais à la place on obtient logiquement 0 au lieu d'une matrice des valeurs images).

J'ai effectué mes tests sur deux systèmes différents :
--> sous Mac OS et Scilab 6.1.0
--> sous Linux (Debian) et Scllab 6.0.x

Si quelqu'un peut m'éclairer...

Merci,
IzB