MATLAB 中的非线性求根

Nonlinear root finding in MATLAB

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

请帮忙

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

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