'Problem' with fzero

Hi, hope you all are well. I am here due to a problem with the function called 'fzero'.
On one hand, I have this file: f.m
function y=f(x)
y= besselj(1,x);
And on the other hand: exercise.m
D=fzero(@f,[0 10]);
tam=length(D);
for i=1:tam
fprintf(' Possible MAX or MIN: f(%f) \n',D(i))
end
When I run exercise.m, I get this output:
Possible MAX or MIN: f(0.000000)
I know where this values should be located...
What am I doing wrong? Thanks in advance. PD: I have to use fzero and besselj(1,x) at [0:10]

 Risposta accettata

Matt J
Matt J il 30 Giu 2015
Modificato: Matt J il 30 Giu 2015

0 voti

Looks like the code succeded to me. Your function does have a root at x=0.
No idea why you display a message involving MAX and MIN unless you were really trying to minimize/maximize the function. But as its name implies, fzero finds zeros, not max's and min's. You might have been looking to use fminsearch()

1 Commento

JM
JM il 30 Giu 2015
Thanks for your answer. Due to that I realized I should have used f'(x) instead of f(x). Here it is the fixed code:
x=0:10;
xx=0:0.01:10;
y= @(x) besselj(1,x); % F(X)
f= @(x) (besselj(0, x) - besselj(1, x)/x); % F'(X)
for i=2:10
D=fzero(f,x(i));
fprintf(' Possible MAX or MIN: f(%f) \n',D)
end
It gives you all the possible max's and min's (absolutes and relatives) of F(X) evaluated at [0:10] but at 0 and 10. Thanks again. Regards

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Prodotti

Richiesto:

JM
il 30 Giu 2015

Commentato:

JM
il 30 Giu 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by