Error using fzero function

2 views (last 30 days)
Elyssa Kairouz
Elyssa Kairouz on 11 May 2022
Edited: Torsten on 11 May 2022
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);

Answers (1)

Torsten
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

Tags

Community Treasure Hunt

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

Start Hunting!