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 件のコメント

Matt J
Matt J 2012 年 10 月 7 日
編集済み: Matt J 2012 年 10 月 7 日
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
Matt Fig 2012 年 10 月 7 日
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.

サインインしてコメントする。

 採用された回答

Matt Fig
Matt Fig 2012 年 10 月 7 日
編集済み: Matt Fig 2012 年 10 月 7 日

1 投票

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 件のコメント

Matt Fig
Matt Fig 2012 年 10 月 7 日
編集済み: Matt Fig 2012 年 10 月 8 日
In general, one would put the call to fzero in a try-catch block because it can error....

サインインしてコメントする。

その他の回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2012 年 10 月 7 日
編集済み: Andrei Bobrov 2012 年 10 月 7 日

0 投票

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));

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by