'Problem' with fzero

1 view (last 30 days)
JM
JM on 30 Jun 2015
Commented: JM on 30 Jun 2015
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]

Accepted Answer

Matt J
Matt J on 30 Jun 2015
Edited: Matt J on 30 Jun 2015
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 Comment
JM
JM on 30 Jun 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

Sign in to comment.

More Answers (0)

Categories

Find more on Optimization in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!