How do I find the zeros of my function?
Show older comments
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
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?
Matt Fig
on 7 Oct 2012
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.
Accepted Answer
More Answers (1)
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!