IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Résolution d'une équation par trois méthodes (bissection, Newton et point fixe)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut Résolution d'une équation par trois méthodes (bissection, Newton et point fixe)
    salut à tous,

    j'ai besoin d'une aide urgente SVP, je veut résoudre l'équation suivante sous MATLAB par 3 méthodes (Bissection, Newton, et Point fixe):
    f(x)= exp(x-3)+4.

    merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 109
    Par défaut
    méthode de la bissection (Tu as de la chance j'avais déjà programmer cette 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    function [ r ] = bisection( f, a, b, N, eps_step, eps_abs )
        % Check that that neither end-point is a root
        % and if f(a) and f(b) have the same sign, throw an exception.
     
        if ( f(a) == 0 )
    	r = a;
    	return;
        elseif ( f(b) == 0 )
    	r = b;
    	return;
        elseif ( f(a) * f(b) > 0 )
            error( 'f(a) and f(b) do not have opposite signs' );
        end
     
        % We will iterate N times and if a root was not
        % found after N iterations, an exception will be thrown.
     
        for k = 1:N
            % Find the mid-point
            c = (a + b)/2;
     
            % Check if we found a root or whether or not
            % we should continue with:
            %          [a, c] if f(a) and f(c) have opposite signs, or
            %          [c, b] if f(c) and f(b) have opposite signs.
     
            if ( f(c) == 0 )
                r = c;
                return;
            elseif ( f(c)*f(a) < 0 )
                b = c;
            else
                a = c;
            end
     
            % If |b - a| < eps_step, check whether or not
            %       |f(a)| < |f(b)| and |f(a)| < eps_abs and return 'a', or
            %       |f(b)| < eps_abs and return 'b'.
     
            if ( b - a < eps_step )
                if ( abs( f(a) ) < abs( f(b) ) && abs( f(a) ) < eps_abs )
                    r = a;
                    return;
                elseif ( abs( f(b) ) < eps_abs )
                    r = b;
                    return;
                end
            end
        end
     
        error( 'the method did not converge' );
    end

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 109
    Par défaut
    Ensuite pour la méthode de Newton, il faut que tu transforme ta fonction en suite. f(x) devient f(xn).

    Tu dois résoudre le système suivant :

    x0 = ce que tu cherches
    x(n+1)=xn-f(xn)/f'(xn)

    tu devrais essayer quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    e=1e-10;
    for i=m:n
        x(i+1)=x(i)-f(x(i))/diff(f(x(i)));
        if abs(x(i+1)-x(i))<=e   %condition d'arret
             xp=x(i);
             fprintf('xp=%f\n',x(i));
             return;
        end
    end
    A toi de trouver les bornes m et n

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 109
    Par défaut
    Pour finir tu pourrais utiliser quelque chose de ce genre là pour la méthode du point fixe.

    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
     
    function x1 = FPI(f,x1,tol)
    % FPI(f,x0) Iterations du point fixe
    %
    if nargin == 2
        tol = 1e-8;
    end
    it = 0;
    itmax = 100;
    x0 = realmax ;
    while ~converged (x0,x1,tol)
        x0 = x1;
        x1 = feval(f,x0);
        it = it + 1;
        if it > itmax
            error('Maxit in FPI');
        end
    end
    avec converged une fonction qui définie le convergence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function res = converged(y0,y1,tol)
    res = all(abs(y1-y0)./(abs(y0)+1) < tol);
    end

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut Un trés grand merci
    Merci énormément Beltharion pour t'à réponse, je vais essayer avec Newton et le Point fixe.

    un grand merci encore une fois...

Discussions similaires

  1. résolution d'une équation par récurrence
    Par Gamzella dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/06/2014, 13h05
  2. Résolution d'une équation par dichotomie
    Par jojo5457 dans le forum Général Python
    Réponses: 10
    Dernier message: 11/11/2012, 15h38
  3. Résolution système d'équation par la méthode SOR
    Par seanp223 dans le forum Mathématiques
    Réponses: 9
    Dernier message: 25/05/2011, 15h35
  4. [Débutant] Trouver les zéros d'une équation par la méthode de Newton-Raphson
    Par monamerce dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/02/2011, 22h57
  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