error in for loop

조회 수: 10 (최근 30일)
Maria ines Barba Sarasua
Maria ines Barba Sarasua 2023년 5월 31일
편집: Torsten 2023년 5월 31일
Hi, I have this error:
More equations than variables is only supported for polynomial systems.
sol = eng.feval_internal('symobj::vpasolve',eqns,vars,X0);
My code is the following one.
clear all
clc
syms x
Caudal=[5.93266E-05, 0.00082573, 0.001571951, 0.002318172, 0.003064541, 0.004018053, 0.00493061, 0.005552929, 0.006549172, 0.007338123, 0.008085823, 0.008833522, 0.009415033, 0.009996545, 0.010868442, 0.011574151, 0.012196174, 0.013025341, 0.013895908, 0.014848681, 0.015801455, 0.017251758, 0.018371164, 0.019200479, 0.019781399, 0.02036254, 0.020860957, 0.021234807, 0.021691677]; % m3/s
Presion=[1.638232756, 1.618669688, 1.579773777, 1.540877866, 1.496456555, 1.446449258, 1.379877876, 1.329967516, 1.230219498, 1.141582866, 1.047432951, 0.953283036, 0.881283191, 0.809283346, 0.71509708, 0.643060884, 0.604201324, 0.559755779, 0.515298116, 0.492917821, 0.470537526, 0.420384823, 0.359278257, 0.309307311, 0.259409068, 0.201222724, 0.140297914, 0.093222956, 0.037835664]; %m aire
densidad_aire=1.19; %su densidad a 25ºC en kg/m3
mu=0.0000174;
v_c=mu/densidad_aire; %viscosidad cinemática del aire
E_al=0.502; % rugosidad del disipador
L_disipador=0.045; % ancho disipador 45mm
Largo=0.095; %largo del disipador 95mm ("diametro")
Dist_alabe_alabe=0.002; % 2mm entre cada aleta
Diametro_mojado=(2*Largo*Dist_alabe_alabe)/(Largo+Dist_alabe_alabe);
A_disipador=Largo*Dist_alabe_alabe*45;
V=Caudal/A_disipador;
V_prom=mean(V, 'All')
for M=1:numel(Caudal)
V_Disipador=(Caudal/A_disipador);
Re=(V_Disipador*Diametro_mojado)/(v_c);
%f=vpasolve((1/sqrt(x)==-2*log((E_al/Largo)/3.7+2.51/(Re(M)*sqrt(x)))));
eqn=(1./sqrt(x))==-2.*log((E_al./Largo)./3.7+2.51./(Re.*sqrt(x)));
f=vpasolve(eqn);
h=f*(Largo/Diametro_mojado*V_prom).^2/(2*9.81);
end

답변 (1개)

Torsten
Torsten 2023년 5월 31일
편집: Torsten 2023년 5월 31일
I substituted 1/sqrt(x) by y in your equation. As you can see, there are only negative solutions such that resubstituting gives complex values for x.
clear all
clc
syms y
Caudal=[5.93266E-05, 0.00082573, 0.001571951, 0.002318172, 0.003064541, 0.004018053, 0.00493061, 0.005552929, 0.006549172, 0.007338123, 0.008085823, 0.008833522, 0.009415033, 0.009996545, 0.010868442, 0.011574151, 0.012196174, 0.013025341, 0.013895908, 0.014848681, 0.015801455, 0.017251758, 0.018371164, 0.019200479, 0.019781399, 0.02036254, 0.020860957, 0.021234807, 0.021691677]; % m3/s
Presion=[1.638232756, 1.618669688, 1.579773777, 1.540877866, 1.496456555, 1.446449258, 1.379877876, 1.329967516, 1.230219498, 1.141582866, 1.047432951, 0.953283036, 0.881283191, 0.809283346, 0.71509708, 0.643060884, 0.604201324, 0.559755779, 0.515298116, 0.492917821, 0.470537526, 0.420384823, 0.359278257, 0.309307311, 0.259409068, 0.201222724, 0.140297914, 0.093222956, 0.037835664]; %m aire
densidad_aire=1.19; %su densidad a 25ºC en kg/m3
mu=0.0000174;
v_c=mu/densidad_aire; %viscosidad cinemática del aire
E_al=0.502; % rugosidad del disipador
L_disipador=0.045; % ancho disipador 45mm
Largo=0.095; %largo del disipador 95mm ("diametro")
Dist_alabe_alabe=0.002; % 2mm entre cada aleta
Diametro_mojado=(2*Largo*Dist_alabe_alabe)/(Largo+Dist_alabe_alabe);
A_disipador=Largo*Dist_alabe_alabe*45;
V=Caudal/A_disipador;
V_prom=mean(V, 'All');
for M=1:numel(Caudal)
V_Disipador=(Caudal(M)/A_disipador);
Re=(V_Disipador*Diametro_mojado)/(v_c);
%f=vpasolve((1/sqrt(x)==-2*log((E_al/Largo)/3.7+2.51/(Re(M)*sqrt(x)))));
eqn=y==-2.*log(E_al./Largo./3.7+2.51.*y/Re);
f(M)=vpasolve(eqn);
if f(M) < 0
f(M)= 1i/f(M)^2;
else
f(M) = 1/f(M)^2;
end
h(M)=f(M)*(Largo/Diametro_mojado*V_prom).^2/(2*9.81);
end

카테고리

Help CenterFile Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by