Fzero Initial value issues

7 Ansichten (letzte 30 Tage)
Ethan Utter
Ethan Utter am 3 Dez. 2022
Kommentiert: John D'Errico am 4 Dez. 2022
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
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 Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by