[scilab]Index invalide
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[scilab]Index invalide



  1. #1
    invite1cede1ba

    [scilab]Index invalide


    ------

    bonjour,
    je doit faire un programme qui trouve la valeur de f(x) pour x=0. Sur le schéma de ce que nous avons fais en cours, j'ai tenté de l'adapter à l'exercice.J'ai donc écrit ceci :
    Code:
    clear all
    clc
    x=0:0.01:1;
    f=((1./((x-0.3)^2+0.01))-20);
    //plot(x,f)
    x1=0;
    x2=1;
    i=0;
    erreur=1;
    nmax=100;
    while (i<=nmax)&(erreur>1e-3)
        i=i+1;
        xm=(x1+x2)/2;
        if (f(xm)*f(x1))<0
            x2=xm;
        else
            x1=xm;
        end
        erreur=abs(x2-x1)/(2*abs(xm));
    
    end
    if(i==nmax+1)
        sprintf('convergence non atteinte au bout de %d iterations',nmax)
        else sprintf('convergence atteinte au bout de %d iteratitions',i-1)
            xm
    end

    Il me donne alors l'erreur suivante:
    Code:
         if (f(xm)*f(x1))<0
                  !--error 21 
    Index invalide.
    
    at line      21 of exec file called by :    
    exec("C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/SCI_TMP_1924_/bissection.sce");
    while executing a callback
    Cela veut dire quoi?Quel est mon erreur?

    -----

  2. #2
    phryte

    Re : [scilab]Index invalide

    Bonjour.
    Il faut définir une fonction externe :
    Code:
    clear all
    clc
    deff('[f] = f(x)', 'f = (1/((x-0.3)^2+0.01))-20')
    x1=0;
    x2=1;
    i=0;
    erreur=1;
    nmax=100;
    while (i<=nmax)&(erreur>1e-3)

  3. #3
    invite1cede1ba

    Re : [scilab]Index invalide

    OK daccord, c'est pour ca qu'on me demandait à la question précedente de creer directement la fonction à l'aide de la commande @. Sauf que je n'ai pas compris comment elle marchait ni à quoi cela servait. Maintenant j'ai compris à quoi cela sert, mais je ne comprend pas comment elle marche...meme en tapant les exemples donné dans le formulaire, je n'obtiens pas pareil... cela donnerais quoi ici?

  4. #4
    invitea0ece8ff

    Re : [scilab]Index invalide

    C'est simple, ton f, n'est pas une fonction mais une matrice ligne.
    tu essaye d'acceder a la case xm de ton vecteur, alors que xm est un nombre fractionnaire -> Index invalide.

    pour définir une fonction tu a plusieur choix:
    -soit de maniere statique (se que je te conseille pour ce cas la):
    function y=f(x)
    y=((1./((x-0.3)^2+0.01))-20)
    endfunction

    -soit de manière dynamique (comme la montré phryte)
    deff('[y] = f(x)', 'y = (1/((x-0.3)^2+0.01))-20')

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

    Re : [scilab]Index invalide

    Merci de vous pencher sur mon problème. Je sais que je peux résoudre le problème facilement en créant une nouvelle fonction comme me le propose dionisos (je sais que c'est pas compliqué, c'est d'ailleurs comme ca qu'on a fait en exo). Seulement pour cet exo ci, on me demande de le traiter avec la commande @. Sauf qu'on ne l'a encore jamais abordé en cours et avec les explications du formulaire, je ne comprend pas comment elle fonctionne.
    C'est pour cela que d'une part je m'entête à résoudre le truc grâce à @ (sinon c'est sur que je l'aurais résous en créant une nouvelle fonction), et d'autre part je vous demande de l'aide, car je ne comprend pas comment faire fonctionner cette commande @.

  7. #6
    invitea0ece8ff

    Re : [scilab]Index invalide

    Ah pardon, j'avait pas compris qu'il fallai que tu utilise la commande @.
    Je sait pas dutout se que c'est, ni a quoi sa sert, donc bon je pourrai pas t'aider, ducoup j'vai attendre la réponse avec toi.

  8. #7
    phryte

    Re : [scilab]Index invalide

    Dans ton cas :
    Code:
    function f=fct(x)
      f=1/((x-0.3)^2+0.01)-20
    endfunction

  9. #8
    invite1cede1ba

    Re : [scilab]Index invalide

    Dans mon formulaire, il est marqué dans mon formulaire :
    Il existe d'autres manièers de définire une fonction sans créer de fichier avec la commande inline ou @.
    considérons la fonction suivante:
    f(x)=1/((x-0.3)²+0.01) + 1/((x-0.9)²+0.04) - 6

    Il suffit alors d'écrire :
    Code:
    fh=@(x)(1./((x-0.3).^2+0.01)+1./((x-0.9).2+0.04)-6)
    pour evaluer la fonction fh en x=2.5, il suffit de taper :
    Code:
    fh(2.5)
              ans=
           -5.4092

  10. #9
    invite1cede1ba

    Re : [scilab]Index invalide

    Phryte, tu n'a pas de solution avec @?

Discussions similaires

  1. Win32 invalide sous VISTA
    Par invite2f8fd977 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 10
    Dernier message: 11/12/2008, 16h03
  2. Win32 invalide
    Par invite698b814e dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 3
    Dernier message: 16/11/2008, 14h26
  3. dim invalide sur TI 84 + sylver
    Par invitec2d75ef9 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/05/2008, 15h04
  4. Crackpot index
    Par Jada dans le forum Science ludique : la science en s'amusant
    Réponses: 12
    Dernier message: 16/09/2007, 14h13