考虑以下功能:
fun=@(x) tan(x);
x = NaN*ones(100,1); % Initializes x.
starting_points=linspace(0,4*pi,100);
for i=1:100
% Look for the zeros in the function's current window.
x(i)=fzero(fun, starting_points(i));
end
x_unique=x(diff(x)>1e-12)
该功能的输出是:
x_unique =
-0.0000 1.5708 3.1416 4.7124 6.2832 7.8540 9.4248 10.9956
我们知道这不是真的,因为tan在区间[0,4 * pi]中只有5个根,即0,pi,2 * pi,3 * pi和4 * pi。 问题是 - fzero将x值作为输出,其中函数变得不连续。如何纠正这个问题?有解决方法吗?
答案 0 :(得分:1)
我终于找到了解决方法。感谢@daniel
k=1;
for i =1:size(x_unique)
if abs(fun(x_unique(i))) < 0.01
R(k)=x_unique(i);
k=k+1;
end
end
将此添加到代码的末尾。这将只给出给定函数的零。