MATLAB problème boucle
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

MATLAB problème boucle



  1. #1
    invite0ee8d5f3

    MATLAB problème boucle


    ------

    Bonjour,

    J’ai un fichier *.txt regroupant des valeurs expérimentales x.
    Une formule théorique me donne la fonction f(x)
    et je cherche à ce que cette fonction soit strictement croissante.
    Le nombre de valeurs expérimentales est définit par le nombre de lignes nb_of_lines.
    Si la pente n’est pas positive en ne serait-ce qu’un point,
    je veux rendre la valeur K = 100000000000000000.
    En revanche, si elle est strictement positive en tout point, je veux rendre la formule K= sqrt(sum(f.^2))

    for i=2:1:nb_of_lines
    diff(i)=(f(i)-f(i-1))/(x(i)-x(i-1)) %formule de la pente
    if diff(i)<0
    K = 100000000000000000
    else K = sqrt(sum(f.^2))
    end
    end

    Mon problème est le suivant : quand je lance ce calcul,
    le programme ne s’intéresse qu’à la dernière valeur de diff en i=nb_of_lines
    qui est positive et me rends donc K= sqrt(sum(f.^2)).
    Cependant, aux premières itérations, j’obtiens bien des valeurs négatives pour diff.
    Je souhaiterais donc que cela retourne la valeur K=100000000000000000.

    Quelqu’un saurait-il m’aider ?

    Merci beaucoup.

    -----

  2. #2
    invite8fd0ee2c

    Re : MATLAB problème boucle

    Bonjour,

    Il serait peut-être plus judicieux d'utiliser une boucle de type
    while

    Je ne sais plus si dans Matlab elle y est mais quelque chose du style

    for i=2:1:nb_of_lines
    diff(i)=(f(i)-f(i-1))/(x(i)-x(i-1)) %formule de la pente


    while(diff(i)>0)
    K = sqrt(sum(f.^2))
    end

    K = 100000000000000000


    end

  3. #3
    gg0
    Animateur Mathématiques

    Re : MATLAB problème boucle

    Bonjour.

    Il faut faire une "sortie de boucle" si tu as diff(i)<0, donc rajouter par exemple " i=1+nb_of_lines" après "K=100000000000000000.".

    Autre chose : En utilisant des matrices-vecteurs et du calcul matriciel, tu peux faire beaucoup plus simple et surtout plus rapide. Pour tester la positivité, tu peux utiliser le min.

    @ Steffler : Ton programme rend "K=100000000000000000" à tous les coups, puisque c'est la dernière instruction.

    Cordialement.

  4. #4
    invite8fd0ee2c

    Re : MATLAB problème boucle

    Bonjour,

    A oui c'est pas faux :/

    Sur Matlab c'est pas possible de faire une boucle comme dans le C++ (si mes souvenirs sont bon)

    Do
    .....
    While ("condition")
    Else
    ....
    End

  5. A voir en vidéo sur Futura
  6. #5
    gg0
    Animateur Mathématiques

    Re : MATLAB problème boucle

    En général, on évite, si c'est possible.

    Ici, la pratique est de créer un vecteur (matrice n x 1) des xi, on en déduit le vecteur des f(xi), puis le vecteur des taux de variation. S'il est positif une fonction matlab en donne la somme.

    La base de matlab (mat pour matrice) est le calcul matriciel avec des routines optimisées.
    Tu peux t'initier à ce genre de programmation avec le gratuit Scilab (en gros, la base sur laquelle a été développé matlab) de l'Inria.

    Cordialement.

Discussions similaires

  1. Boucle Matlab
    Par invite3b879c03 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 06/11/2012, 13h34
  2. matlab, boucle for
    Par aureo91 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 27/04/2010, 14h10
  3. Matlab : Problème de format dans boucle
    Par invite2d9939ba dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 03/04/2008, 11h15
  4. probleme d'indexage de boucle for avec matlab
    Par invitec45730b2 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 23/10/2007, 02h32
  5. MATLAB-pb d'initialisation de boucle
    Par invite230d05f5 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/07/2005, 15h08