1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 18
    Points : 7
    Points
    7

    Par défaut [fsolve] résolution d'une équation polynomiale

    Bonjour,

    J'ai un problème itératif dont je dois résoudre une équation non linéaire, et qui dépend des paramètres et des variables de mon problème.

    j'ai définie dans un fichier .m (version R2016a de MATLAB) la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    for i=1:n+1
        if i==1
            v(i)=0;
            r(i)=0;
            theta(i)=e/(l-a);
            Ro(i)=1/(l-b).*theta(i);
            w(i)=(((A+C)*w_r)/(A*Ra+C.*(Rs_0-Ro(i)))).*Ro(i);
            Nc(i)=Cste_3*m.*Ro(i)*w(i).^2;
            d(i)=2*pi*(Rs_0+r(i));
        else
            v(i)=2*pi*kv/H.*Nc(i-1).*d(i-1);
           % r(i) solution de pi/3*(l-a)*(3*Rr_0*r(i)+r^2(i))=v(i)
           r(i)=fsolve(pi/3*(l-a)*(3*Rr_0*r(i)+r^2(i))-v(i)=0,0);
           theta(i)=(e+r(i))/(l-a);
           Ro(i)=1/(l-b).*theta(i);
           w(i)=(((A+C)*w_r)/(A*Ra+C.*(Rs-Ro(i)))).*Ro(i); 
           Nc(i)=Cste_3*m.*Ro(i)*w(i).^2;
           d(i)=2*pi*(Rs_0+r(i));
        end
    end

    mais ce programme ne marche pas (un problème avec la fonction fsolve), en effet je sais pas comment je résous une telle équation et intégrer la solution dans le programme.
    merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 699
    Points : 2 273
    Points
    2 273

    Par défaut résolution d'une équation polynomiale

    Bonjour,

    plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r(i)=fsolve(pi/3*(l-a)*(3*Rr_0*r(i-1)+r(i-1)^2)-v(i),0);

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 18
    Points : 7
    Points
    7

    Par défaut

    Citation Envoyé par phryte Voir le message
    Bonjour,

    plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r(i)=fsolve(pi/3*(l-a)*(3*Rr_0*r(i-1)+r(i-1)^2)-v(i),0);
    Bonjour,

    j'ai essayé ce code, et il m'a affiché cet erreur pour la fonction fsolve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using lsqfcnchk (line 108)
    FUN must be a function, a valid string expression, or an inline function object.
     
    Error in fsolve (line 210)
        funfcn = lsqfcnchk(FUN,'fsolve',length(varargin),funValCheck,gradflag);
    je pense qu'il y a un problème avec la fonction fsolve. que pensez vous?

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    1 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2005
    Messages : 1 518
    Points : 2 663
    Points
    2 663

    Par défaut

    salut

    j'avoue que je comprend pas trop ce que tu veux faire, cad de quelle fonction (fonction de quelle(s) variable(x)) tu cherches une solution
    phryte t'as surtout indiqué une erreur de syntaxe évidente dans l'écriture r^2(i)) qui ne veut rien dire

    sinon pour utiliser fsolve correctement il faut écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xsolution = fsolve(@(x) f(x, parametres(i)), x0);
    je te laisse écrire correctement la fonction, soit directement dans le solve, soit dans un fichier séparé
    (je te conseille la deuxième option car elle est "moins piégeuse" et que tu as pas l'aire de maîtriser le sujet)

    Fabien

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 18
    Points : 7
    Points
    7

    Par défaut

    Citation Envoyé par le fab Voir le message
    pour utiliser fsolve correctement il faut écrire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xsolution = fsolve(@(x) f(x, parametres(i)), x0);
    Fabien
    Salut,

    effectivement je maitrise pas MATLAB et le problème que j'ai, est combiné.
    Voici une image descriptive du problème itératif:
    Nom : programme.PNG
Affichages : 15
Taille : 16,1 Ko

    pour ce la, j'ai le code MATLAB suivant, sauf que il marche pas, j'ai encore un problème avec la fonction fsolve, j'ai essayé de faire la première solution que vous m'avez proposer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f=@(x)(pi/3*(l-a)*(3*Rr_0*x+x^2)-v(i));
            r(i) = fsolve(@(x) f(x,(i-1)), 0);
    que pensez vous? comment puisse je résoudre ce problème?

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    1 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2005
    Messages : 1 518
    Points : 2 663
    Points
    2 663

    Par défaut

    plutôt quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f=@(x,i)(pi/3*(l-a)*(3*Rr_0*x+x^2)-v(i));
    r(i) = fsolve(@(x) f(x,(i-1)), 0);

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2017
    Messages : 18
    Points : 7
    Points
    7

    Par défaut

    Je vous remercie pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résolution d'une équation trigonométrique
    Par tlemcenvisit dans le forum Général Algorithmique
    Réponses: 21
    Dernier message: 20/08/2009, 17h47
  2. Résolution d'une équation
    Par johnvox dans le forum Delphi
    Réponses: 6
    Dernier message: 13/02/2007, 10h04
  3. Résolution d'une équation différentielle
    Par ramrouma dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/02/2007, 14h11
  4. Réponses: 1
    Dernier message: 08/12/2006, 17h13
  5. Résolution d'une équation par Gauss
    Par rahmani01 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/11/2006, 22h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo