Error using fzero function
2 views (last 30 days)
Show older comments
I have problem with this code it returns the following error "Error using fzero Initial function value must be finite and real" in the linen where yp0= fzero( @(yp0) B(0, y0, yp0), 0);
h1 = [0 1 4 6 8 15 25];
A1 = [50 55 58 67 75 85 125];
%Valeurs numériques
d = 0.500;
L = 35.0;
wv = 33200;
etha = 5.00;
rho = 1000;
H = 10.0;
nu = 0.000001;
g = 9.81;
%On interprète: l'aire au fond de la retenue est de 50 m^2, et l'aire à la
%surface quand la retenue est pleine est de 125 m^2
%Fonction qui donne la surface de la retenue en fonction de la hauteur
%d'eau
A = @(h) interp1(h1,A1,h);
%On utilise l'equation de Bernoulli générale entre la surface de la retenue
%et la sortie de la turbine
v = @(h,hp) -4*hp.*A(h)./pi*d^2; %vitesse dans le tuyau
ps = @(h,hp) etha*0.5*hp.^2.*A(h).^2/(pi*(d/2)^2)^2; %perte de charge singulière dans le tuyau
pr = @(h,hp) 0.316.*(v(h,hp).*d/nu).^(-0.25)*L/d*0.5.*v(h,hp).^2; %perte de charge régulière dans le tuyau
B = @(t,h,hp) 0.5*hp.^2 + g*(H+h) -wv/rho -0.5.*v(h,hp).^2 -ps(h,hp) -pr(h,hp);
tspan = [0 1500];
y0 =24.0;
yp0 = fzero( @(yp0) B(0, y0, yp0), 0);
[t y] = odei15(B, tspan, y0,yp0);
plot(t,y);
0 Comments
Answers (1)
Torsten
on 11 May 2022
Edited: Torsten
on 11 May 2022
I changed
v = -4*hp.*A(h)./pi*d^2; %vitesse dans le tuyau
to
v = -4*hp.*A(h)./(pi*d^2); %vitesse dans le tuyau
For better debugging, try
tspan = [0 1500];
y0 =24.0;
yp0 = fzero( @(yp0) B(0, y0, yp0), -0.0001)
[t y] = ode15i(@B, tspan, y0,yp0);
plot(t,y)
function res = B(t,h,hp)
h1 = [0 1 4 6 8 15 25];
A1 = [50 55 58 67 75 85 125];
%Valeurs numériques
d = 0.500;
L = 35.0;
wv = 33200;
etha = 5.00;
rho = 1000;
H = 10.0;
nu = 0.000001;
g = 9.81;
%On interprète: l'aire au fond de la retenue est de 50 m^2, et l'aire à la
%surface quand la retenue est pleine est de 125 m^2
%Fonction qui donne la surface de la retenue en fonction de la hauteur
%d'eau
A = interp1(h1,A1,h);
%On utilise l'equation de Bernoulli générale entre la surface de la retenue
%et la sortie de la turbine
v = -4*hp.*A./(pi*d^2); %vitesse dans le tuyau
ps = etha*0.5*hp.^2.*A.^2/(pi*(d/2)^2)^2; %perte de charge singulière dans le tuyau
pr = 0.316.*(v.*d/nu).^(-0.25)*L/d*0.5.*v.^2; %perte de charge régulière dans le tuyau
res = 0.5*hp.^2 + g*(H+h) -wv/rho -0.5.*v.^2 -ps -pr;
end
0 Comments
See Also
Categories
Find more on Nonlinear Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!