Savez vous pourquoi la fonction fzero peut bugguer dans le cas:
rep=fzero(f,1)
on peut avoir
rep= Nan
si l'argument (1 dans mon exemple) est trop eloigné de la réponse?
Merci![]()
Savez vous pourquoi la fonction fzero peut bugguer dans le cas:
rep=fzero(f,1)
on peut avoir
rep= Nan
si l'argument (1 dans mon exemple) est trop eloigné de la réponse?
Merci![]()
Salut !
En fait, la fonction fzero cherche une valeur de x pour laquelle f(x) change de signe, et non celles pour lesquelles f(x) s'annule. Par exemple, la fonction f(x)=x^2 s'annule en x=0, mais ne change pas de signe; fzero ne trouvera donc pas cette solution. si tu nous indiques quelle est ta fonction et quelle valeur tu as pris pour x0, on pourra t'en dire plus.
Jean-Marc Blanc
Ma fonction est :
f=y*tanh(y)-C
avec C une constante que je change grâce à "global C" avant chaque résolution.
C[ 10^-4;10]
Lorsque je prend fzero(f,1) je n'obtiens pas tous les y, alors que avec fzero(f,0.2) ça marche.
Salut,
si tu fait :
On te dit que fzero(f,x0) , se comporte différemment suivant x0 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part >> help fzero
x0 scalaire : elle cherche un zero de f autour de x0
si x0 est un vecteur de deux élément : elle vérifie que f(x0(1))*f(x0(2))<=0, puis cherche entre les deux.
Essayes ceci :
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 C = 5; fun=@(y)(y.*tanh(y)-C); xx = -10:10; plot(xx,fun(xx)) hold on plot(xx,zeros(size(xx))) drawnow x0 = [0 1]; count = 0; MaxCount = 100; while fun(x0(1))*fun(x0(2)) > 0 && count < MaxCount x0 = 2*x0; end s = fzero(fun,x0) % Verification ZERO = fun(s)
++
Partager