[Scilab] Test d'égalité
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[Scilab] Test d'égalité



  1. #1
    Walter_Arroway

    [Scilab] Test d'égalité


    ------

    Bonjour,

    Je travaille actuellement sous Scilab (auquel je ne suis pas habitué) sur un algorithme qui utilise, comme beaucoup d'autres, un test d'égalité dans un "if".
    Je vous joint la partie qui pose problème:

    Code:
    dT = 0.001; 
    T = 3; 
    n = 0; 
    k = 0; 
    
    for t = 0:dT:T
            
            if(k == n*dT) then
                n = n + 1;              
            end;
     
         printf('=> k: %f; n: %d\n',k,n)     
       
         k = k + dT;
            
    end;
    Le test d'égalité se fait parfaitement jusqu'à ce que n prenne la valeur 10, pas au delà. Par contre si je remplace k par t cela marche. Or j'ai besoin de k puisque je dois le réinitialiser à 0 de temps à autre.
    De puis si je fais le test "à la main":

    Code:
            
            if(k = 10*dT) then
                n = n + 1;              
             end;
    il ne se passe quand même rien, le test n'est pas validé alors qu'un simple printf me permet de vérifier visuellement l'égalité.

    Auriez vous une idée de la source du problème ?

    Merci d'avance !

    -----

  2. #2
    Jack
    Modérateur

    Re : [Scilab] Test d'égalité

    if(k = 10*dT) then
    peut-être une erreur involontaire, mais il faut remplacer le "=" par "==".
    if(k == n*dT) then
    Un test d'égalité sur des flottants est toujours un peu risqué vu que toutes les valeurs ne sont pas codables. Tu as essayé avec un encadrement de la valeur à tester?

  3. #3
    Walter_Arroway

    Re : [Scilab] Test d'égalité

    Merci pour ta réponse.

    En effet c'est une erreur involontaire lors de la copie sur le forum, j'ai du l'effacer par mégarde.
    Tu entends quoi par un encadrement de la valeur à tester ? Elle est déjà encadrée à cause de la boucle, ma variable k est comprise entre 0 et T, comme t d'ailleurs (et comme je l'ai dit cela marche avec t).
    J'ai réussi à faire marcher le code avec le test "round(k/dT) == n" mais cela ne me dit quand même pas d'où vient le problème initial. :s

  4. #4
    Jack
    Modérateur

    Re : [Scilab] Test d'égalité

    Essaie-voir avec
    if((k >= (n*dT) - p) || (k <= (n*dT) + p)) then

    || étant le OU logique et p la précision attendue

  5. A voir en vidéo sur Futura
  6. #5
    Walter_Arroway

    Re : [Scilab] Test d'égalité

    Ah, j'avais mal compris ce que tu voulais me dire, j'avais déjà essayé et ça marche.
    Cependant comme c'est du "bricolage" je ne trouvais pas ça approprié et je voulais faire au plus simple.
    Comme apparemment c'est un problème de logiciel plus que de code je vais garder ça.
    Merci pour ton aide.

Discussions similaires

  1. Laplace : égalité entrainant l'égalité des modules ?
    Par marcvart dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 28/01/2013, 10h09
  2. [SCILAB] Récupération d'une variable d'un second fichier scilab
    Par nikob88 dans le forum Mathématiques du supérieur
    Réponses: 20
    Dernier message: 06/07/2012, 15h07
  3. test de substitution au test test de Mc Nemar
    Par invite0fa80561 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 13/08/2009, 00h52
  4. scilab probleme d'égalité
    Par invite5ed89f6f dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 17/07/2009, 15h04