我有等式:
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
答案 0 :(得分:1)
简而言之,您可以通过减法将任何方程问题重新排列为寻根问题:
f = @(x) (sin(x) - (exp(a) + 4));
roots
仅适用于多项式。 fzero
是一种迭代算法,可以收敛到接近初始猜测i
的一个根。
之后,您可以使用unique
函数来提取不同的解决方案。