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 :

algorithme de newton


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Par défaut algorithme de newton
    Bonjour,

    je suis étudiant en génie civil et je viens de débuter la programmation sous matlab.
    Je cherche à rédiger l'algorithme de newton en m'inspirant d'un algorithme de bissection :

    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
     
     k=1; 
    ak=a;bk=b; 
    x(k)=(ak+bk)/2; res(k)=abs(f(x(k)));
     
    % Itérations
    while (res(k)>=eps) && (k<=kmax)
        test=f(ak)*f(x(k));
        if (test <=0) 
            bk=x(k);
        else
            ak=x(k);
        end
        k=k+1;
        x(k)=(ak+bk)/2;
        res(k)=abs(f(x(k)));
    end
     
    % Affichage du résultat final à l'écran
    k=size(res,2);
    if (k<kmax)
       sprintf('Algorithme de la bissection convergé pour k=%d, res=%d, x=%d',k,res(k),x(k))
    else
       sprintf('Algorithme de la bissection pas convergé pour k=%d, res=%d, x=%d',k,res(k),x(k)) 
    end
    Pour créer cette algorithme, je cherche à écrire une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function Newton [x,res]=Newton4(f,df,x0,eps,kmax)
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,
    Quelques corrections pour l'algorithme de la bissection.
    Pour Newton il faut utiliser la dérivée de f(x).

    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
    f=@(x) x+1;
    k=1; a=-2;b=2;
    ak=a;bk=b; kmax=100;
    x(k)=(ak+bk)/2;
    %res(k)=abs(f(x(k)));
    res(k)=bk-ak;
    % Itérations
    while res(k) > eps && k<=kmax
        test=f(ak)*f(x(k));
        if test <=0
            bk=x(k);
        else
            ak=x(k);
        end
        k=k+1;
        %res(k)=abs(f(x(k)));
        res(k)=bk-ak;
        x(k)=(ak+bk)/2;
    end
    % Affichage du résultat final à l'écran
    k=size(res,2);
    if k<kmax
        sprintf('Algorithme de la bissection convergé pour k=%d, res=%d, x=%d',k,res(k),x(k))
    else
        sprintf('Algorithme de la bissection pas convergé pour k=%d, res=%d, x=%d',k,res(k),x(k))
    end
    Pour la function il faut dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Newton [x,res]=Newton4(f,ak,bk,eps,kmax)

Discussions similaires

  1. Algorithme de Newton
    Par bingbang19 dans le forum C++
    Réponses: 4
    Dernier message: 23/05/2011, 21h40
  2. Algorithme Gauss Newton
    Par Robert Sojic dans le forum Mathématiques
    Réponses: 0
    Dernier message: 09/08/2009, 13h34
  3. Réponses: 2
    Dernier message: 24/05/2008, 21h54

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