Count 八度-找到根并计算它们
我有一个等式: 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以便查找所有根,然后计算查找到的根的数量并输出结果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
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