Bonjour.
C'est ce qui est dans cette discussion.matlab est une partie calcul formel
http://www.developpez.net/forums/d87...ewton-raphson/
merci pour votre réponses
finalement le programme est bien executer mais il ya une toute petite erreur c'est que par exemple si je fais entrer un fonction qui s'annule deux fois ou plus le programme calcule un point dont lequel la fonction il s'annule et pas plus,
j'espere que vous avez compris
voila le code MATLAB
j'attends votre réponses
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 function NewtonRaphson(x0,f) clc format long x(1)=x0; e=1e-10; n=5000; for i=2:n df=(f(x(i-1)+e)-f(x(i-1)))/e; %on calcule une valeur approchée de la dérivée de f en x(i-1). x(i)=x(i-1)-f(x(i-1))/df; if abs(x(i)-x(i-1))<=e disp('La valeur finale est:') xp=x(i) break end end disp('les valeurs des itérations successives sont:') x' figure(1) clf hold on plot(x) plot(x,'*r') title('Approximations successives de la methode de New.-Raph.'); xlabel('numero de l''iteration') ylabel('valeur de l''approximation') end
et merci d'avance
Bonjour.
Une proposition (à améliorer) :
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 clear clc xi=[0 10]; pas=0.1; f=inline('x^3-6*x^2+11*x-6'); e=1e-12; xp=0; hold on for x0=xi(1):pas:xi(2) clear x x(1)=x0; i=2; while abs(f(x(i-1)))>=e df=(f(x(i-1)+e)-f(x(i-1)))/e; x(i)=x(i-1)-f(x(i-1))/df; i=i+1; end xp=[xp x(end)+e]; plot(1:length(x),x) end disp('Les valeurs finales sont :') unique(fix(1000*xp(2:end))/1000) title('Approximations successives de la methode de New.-Raph.'); xlabel('numero de l''iteration') ylabel('valeur de l''approximation') grid
merci beaucoup pour la réponse,
je sais que je pose beaucoup de questions ,mais est ce que vous pouvez m'expliquer la boucle for et ces instructions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 xp=[xp x(end)+e]; plot(1:length(x),x)merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part unique(fix(1000*xp(2:end))/1000)
Bonjour.
Plage de recherche en x et pas de recherche.xi=[0 10];
pas=0.1;
La boucle for effectue tous les calculs de recherche en initialisant le x0 à chaque itération.
Résultats en enlevant le premier terme d'initialisation et en calculant par excès.xp=[xp x(end)+e];
Tracé de tous les calculs en ordonnant les valeurs.plot(1:length(x),x)
Extrait des valeurs uniques des racines (car il y a plusieurs valeurs communes avec arrondi).unique(fix(1000*xp(2:end))/1000)
bonjour;
est ce que vous pouvez m'expliquer de plus les instructions de la boucle for et pourquoi vous avez supprimer le x parce que j'ai pas bien comprendre
et merci d'avance
Parce qu'à chaque calcul "on repart à zéro".vous avez supprimer le x
Le vecteur x est de taille différente à chaque itération.
merci beaucoup pour vos aides
salut,
mr 'phryte'
j'ai essayé votre code,mais il m'affiche pas comme vous,est c k vous pouvez m'aider svp?
merci
Bonjour,
non j'ai gradé la meme fonction!
Bonjour.
Qu'as-tu comme résultats? Des messages erreurs ?
salut
pas de message d'erreur sauf la figure est incorrecte et aussi des valeurs fausses
Bonjour.
Peux-tu nous faire voir ta figure ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager