help in fzero function
显示 更早的评论
Here x, y,teta are vectors. When I call the function fzero it shows this message:
fzero(@(t)shkruajek(x,y,1,3,teta,0.1,4,t),0)
Exiting fzero: aborting search for an interval containing a sign change
because NaN or Inf function value encountered during search.
(Function value at -2.54232e+306 is NaN.)
Check function or try again with a different starting value.
NaN
can you help me to determine where is the problem here??
function [ek]=shkruajek(x,y,i,j,teta,speed,R,t)
ek=sqrt(((x(i)+ speed*cos(teta(i)*t)) - (x(j) + speed*sin(cos(teta(j)*t))))^ 2+ ((y(i) + speed*sin(teta(i)*t)) - (y(j) + speed*sin(teta(j)*t))).^ 2)-R;
end
a=fzero(@(t)shkruajek(x,y,i,j,teta,speed,R,t),0);
4 个评论
John Chilleri
2017-1-13
Is it possible your function doesn't have a root?
ana take
2017-1-13
ana take
2017-1-13
Walter Roberson
2017-1-13
Note that only the newer versions of MATLAB support fzero on complex-valued functions.
采纳的回答
更多回答(1 个)
John Chilleri
2017-1-13
编辑:John Chilleri
2017-1-13
1 个投票
Hello,
In addition to what Walter Roberson said as good practice, it would appear that your function does not have a root.
I say this because your t is only found within sine and cosine functions, and after fzero has tested one period then no other value of t will make a difference, so the fact that it does not find a root within one period and rather continues to eventually error at -2.5 e306 suggests there is no root.
Hope this helps!
类别
在 帮助中心 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!