Count 八度-找到根并计算它们

Count 八度-找到根并计算它们,count,octave,Count,Octave,我有一个等式: sin(x)=exp(a)+4 x=1:1:20 a=0.02 我知道我可以在循环中使用根或fzero函数来确定根 如何使用上述一个或两个函数来查找所有根,并在sin(x)=exp(a)-4中将它们全部计数 我写了这段代码,它用fzero找到零并在plot中标记它们。但是如何修改为sin(x)=exp(a)-4以便查找所有根,然后计算查找到的根的数量并输出结果 x = 0:.1:20; f = @(x) sin(x) + 4; c = zeros(length(x),1); fo

我有一个等式:

sin(x)=exp(a)+4

x=1:1:20

a=0.02

我知道我可以在循环中使用根或fzero函数来确定根

如何使用上述一个或两个函数来查找所有根,并在sin(x)=exp(a)-4中将它们全部计数

我写了这段代码,它用fzero找到零并在plot中标记它们。但是如何修改为sin(x)=exp(a)-4以便查找所有根,然后计算查找到的根的数量并输出结果

x = 0:.1:20;
f = @(x) sin(x) + 4;
c = zeros(length(x),1);
for i=0:length(x)
    c = fzero(f,i);
    axis([0, 20, -2, 1])
    plot(x, f(x));
    title('Zeros de f(x) = sin(x) + 4');
    hold on
    plot(c, f(c),'-xr')
    hold on
end
编辑

我在一个循环中使用了fzero,该循环具有要输出的唯一函数,但它从不只输出唯一值。我输出所有副本。有人知道为什么吗

我的新代码:

h = @(x) cos(x);
g = @(x) exp(a*x)-1;

        f = @(x) h(x) - g(x);
        v = zeros(length(x),1);
        for i=0:length(x)
            v = fzero(f,i);
            [s] = unique(v)
        end

简而言之,您可以通过减法将任何方程问题重新排列为寻根问题:

f = @(x) (sin(x) - (exp(a) + 4));
只能对多项式进行运算
fzero
是一种迭代算法,可以收敛到接近初始猜测值
i
的一个根。
之后,您可以使用
unique
函数提取不同的解决方案。

非常感谢。。。请参阅我的编辑,因为复制功能没有正常工作。1。确保将fzero的所有结果堆叠在一个向量中。2.在该循环之外,您确实希望使用一个使用公差的唯一函数,这与答案类似,原因是fzero只是一个近似值,结果在浮点精度的顺序上不同,因此您希望将其设置为公差,例如10^-12