What could be the reason for this fzero error and how to solve it ?

3 次查看(过去 30 天)
This is the error message
This was the warning I got too along with the error message
This is the 5 lines of code to reproduce the error
dd = 0.1069;
vv = 0.7889;
L = 1;
fun = @(aa) ( (-(sqrt(L^2-(vv)^2)/2)) + (aa*sinh(((dd)/2)/aa)) ); xx0 = 0.15; %[10^-6, 10^6];
aa = abs(fzero(fun,xx0));
  13 个评论
Torsten
Torsten 2024-2-7
If you look at the f(a) and f(b) values in your output, you can see that both are negative in all iterations. Thus fzero does not find a sign change and keeps on serching for suitable limits a and b for which f(a)*f(b) < 0 holds.
VIGNESH BALAJI
VIGNESH BALAJI 2024-2-9
@Torsten thanks, I now understand the reason behidn fzero error. Both your answer and @Dyuman Joshi heped me to solve this problem. I am not sure how to accept both of your answers to close this thread.

请先登录,再进行评论。

回答(2 个)

Torsten
Torsten 2024-2-2
Use "fsolve" instead of "fzero":
aa = fsolve(fun,xx0)

Matt J
Matt J 2024-2-2
编辑:Matt J 2024-2-2
You should plot the function to get a better idea where the solution is,
dd = 0.1069;
vv = 0.7889;
L = 1;
fun = @(aa) ( (-(sqrt(L^2-(vv)^2)/2)) + (aa*sinh(((dd)/2)/aa)) );
fplot(fun,[0.01,0.05])
Warning: Function behaves unexpectedly on array inputs. To improve performance, properly vectorize your function to return an output with the same size and shape as the input arguments.
fzero(fun,[0.01,0.05])
ans = 0.0142

类别

Help CenterFile Exchange 中查找有关 Optimization 的更多信息

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by