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 Kommentar

John D'Errico
John D'Errico am 4 Dez. 2022
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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Walter Roberson
Walter Roberson am 3 Dez. 2022

0 Stimmen

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);

Kategorien

Mehr zu Optimization finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2022b

Gefragt:

am 3 Dez. 2022

Kommentiert:

am 4 Dez. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by