MATLAB中的非线性根发现

时间:2016-10-14 05:12:20

标签: matlab nonlinear-functions

function y = f(z)

b=10;


y=(cos(z))+(b*(sin(z)/z))-cos(d);

这是我的函数文件。

fun = @f; % function

x0 = 1; % initial point  

z = fzero(fun,x0);

在上面运行代码时,我只获得一个值。但我需要的是一组满足

的值
(cos(z))+(b*(sin(z)/z))-cos(d)=0

其中:d = -5:1:5

请帮助

1 个答案:

答案 0 :(得分:0)

您可以使用不同的初始点。这个过程可以自动化:

solutions= zeros(1,100);
for k= 1:numel(solutions)
    x0= (rand-0.5)*20; % generate the random initial point in (-10,10)
    z = fzero(@f,x0);
    solutions(k)= z;
end
disp(unique(solutions))

由于求解器的准确性,结果可能包括相同的解决方案。

找到初始点is described here

的另一种方法