八度 - 找到根并计算它们

时间:2015-11-18 19:51:28

标签: count octave

我有等式:

sin(x)= exp(a)+4

x = 1:.1:20

a = 0.02

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

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

我写了这段代码,它用fzero找到了零,并将它们标记在情节中。但是如何修改为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

1 个答案:

答案 0 :(得分:1)

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

f = @(x) (sin(x) - (exp(a) + 4));

roots仅适用于多项式。 fzero是一种迭代算法,可以收敛到接近初始猜测i的一个根。 之后,您可以使用unique函数来提取不同的解决方案。