How do I find the zeros of my function?

Jogn20522 deleted the question after it was answered, so I (MF) am restoring it from memory.
How do I find all the zeros of this function?
ezplot('2*x.^4-3*x.^2+x-7')

2 Comments

Matt J
Matt J on 7 Oct 2012
Edited: Matt J on 7 Oct 2012
Since it's a polynomial, why not use ROOTS?
If it won't always be a polynomial, you need to at least know a priori the minimum spacing between the zeros, and preferably also a tighter bound on the number of them in a given interval. Do you know any general traits of the function that could be used to derive this info?
Pleas do not destroy this question be deleting it and asking a new question in its place! Restore this question, then ask a follow-up question either by posting a comment or by opening a whole new question.

Sign in to comment.

 Accepted Answer

Matt Fig
Matt Fig on 7 Oct 2012
Edited: Matt Fig on 7 Oct 2012
Here is a simpler approach:
x = (-2:0.01:2);
y = @(x) 2*x.^4-3*x.^2+x-7;
plot(x,y(x)); hold on;
cnt = 1;
for ii = -2:.5:2;
rt(cnt) = fzero(y,ii);
cnt = cnt + 1;
end
rt = unique(round(rt*1e10)/1e10);
plot(rt,zeros(size(rt)),'or')

1 Comment

Matt Fig
Matt Fig on 7 Oct 2012
Edited: Matt Fig on 8 Oct 2012
In general, one would put the call to fzero in a try-catch block because it can error....

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 7 Oct 2012
Edited: Andrei Bobrov on 7 Oct 2012
x = (-2:0.01:2);
f = @(x)2*x.^4-3*x.^2+x-7;
d = f(x);
[a, i1] = findpeaks(d);
[b, i2] = findpeaks(-d);
b = -b;
p = [d(1),1;sortrows([[a; i1],[b; i2]]',2);d(end),numel(d)];
ii = p([true;diff(p(:,1) > 0) ~= 0],2);
for jj = numel(ii):-1:2
rootn(jj-1) = fzero(f,[x(ii(jj-1)),x(ii(jj))]);
end
plot(x,f(x),'b-',rootn,f(rootn),'ro'),grid on
%as the Matt Fig answer
x = (-2:0.01:2);
f = @(x)2*x.^4-3*x.^2+x-7;
[a, i1] = findpeaks(f(x));
x0 = [1;i1(:);numel(x)]
root1 = unique(arrayfun(@(ii)fzero(f,x(ii)),x0));

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!