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