Bonjour, je suis bloquée sur un exercice où je dois trouver des erreurs dans un code MATLAB. Voici l'énoncé :
Toto souhaite améliorer la précision de son estimation de ^x (x chapeau zéro de la fonction) en utilisant la méthode de la sécante. Il utilise a (=-5) et b (=5) pour initialiser la méthode, et il boucle tant que l'erreur résiduelle est plus grande que 10^-12, le tout avec une borne sur le nombre d'itérations. Il note x1 la dernière approximation calculée, et x0, l'avant-dernière. Voici son programme : (la fonction est : f(x)=1+x+sin(x).
x0=a;
x1=b;
tol2=10^-12;
n=0;
nmax=20;
while(abs(f(x1))>tol2 | n<nmax
x1old=x1;
x1=x0-f(x1)*(x1-0)/(f(x1)-f(x0));
x0=x1;
n=n+1;
end
x1
f(x1)
n
Ce programme comporte (minimum) 3 erreurs.
Le but de cet exercice est de corriger le programme en corrigeant le moins de choses possible.
J'ai pensé qu'il faut initialiser le programme en écrivant à quoi correspond f (écrire sa formule dans le code).Et je pense que la formule n'est pas correcte mais je ne parviens pas à la corriger. Je n'ai pas vraiment d'autres pistes en tête malgré le fait que je sache que l'algorithme ne rend rien...
Bonsoir
La boucle doit s'arrêter si , ou si n dépasse nmax
donc la boucle doit continuer si ... ? (proposition contraire)
La boucle doit donc continuer si |f(x)|>tol2 et si n<nmax
Je dois donc remplacer le « ou » par le « et », merci beaucoup
j'ai très peu regardé ton code, mais j'attire ton attention sur le fait que la variable x1old est initialisée mais jamais utilisée, il y a sûrement une erreur à chercher par là
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :