Fzero Initial value issues

hey guys getting an error when i try to run this ik the value is around 247 but im getting an error of
"Error using fzero
Initial function value must be finite and real."
%% Part A section II
dhdt = @(t,h) (((-100*r.^2)*sqrt(2*g*h))./(2*h*R-h.^2));
[t2,h2] = ode45(dhdt,[0:600],6.5);
plot(t2,h2);
axis([0 600 0 7])
fun = @(x) polyval(polyfit(t2,h2,1),x)-.5
minT = fzero(fun,245)

1 个评论

Since you never tell us the value of r or g, we cannot even reproduce what you did. If you want help, it would be a good thing to make it easy to get help.

请先登录,再进行评论。

回答(1 个)

fun = @(x) polyval(polyfit(t2,h2,1),x)-.5
Why are you redoing the polyfit each time? You are not changing t2 or h2 or 1 inside fun so polyfit() is always going to return the same value, so you should pre-compute it.
You are fitting a straight line, getting out coefficients for something of the form a*x+b and you are wanting to find x such that a*x+b == 0.5 . But you can solve that directly without fzero, as x = (0.5-b)./a .
p = polyfit(t2, h2, 1);
x = (0.5 - p(2))./p(1);

类别

在 帮助中心 和 File Exchange 中查找有关 Get Started with MATLAB 的更多信息

产品

版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by