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 MATLAB 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!