How can I solve my for

1 visualización (últimos 30 días)
Maria ines Barba Sarasua
Maria ines Barba Sarasua el 31 de Mayo de 2023
Respondida: Walter Roberson el 31 de Mayo de 2023
Hello, I have this error:
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
L_tilde2 = builtin('subsasgn',L_tilde,struct('type','()','subs',{varargin}),R_tilde);
C = privsubsasgn(L,R,inds{:});
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];
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];
v_c=0.0000174/1.19;
A_disipador=0.095*0.002*45;
for M=1:numel(Caudal)
V_Disipador=(Caudal/A_disipador);
Re=(V_Disipador*0.039)/(v_c);
f(M)=vpasolve((1/sqrt(x)==-2*log((0.502/0.095)/3.7+2.51/(Re(M)*sqrt(x))))) %HERE IS THE ERROR
h=f*(0.095/0.0039)*((1.3048).^2/(2*9.81))
end
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.

Error in sym/privsubsasgn (line 1168)
L_tilde2 = builtin('subsasgn',L_tilde,struct('type','()','subs',{varargin}),R_tilde);

Error in indexing (line 999)
C = privsubsasgn(L,R,inds{:});

Respuesta aceptada

Walter Roberson
Walter Roberson el 31 de Mayo de 2023
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];
v_c=sym(0.0000174)/sym(1.19);
A_disipador=sym(0.095)*sym(0.002)*sym(45);
for M=1:numel(Caudal)
V_Disipador=(Caudal(M)/A_disipador);
Re=(V_Disipador*sym(0.039))/(v_c);
eqn = (1/sqrt(x)==-2*log((sym(0.502)/sym(0.095))/sym(3.7)+sym(2.51)/(Re*sqrt(x))))
f{M} = vpasolve(eqn); %HERE IS THE ERROR
h{M} = f{M}*(sym(0.095)/sym(0.0039))*(sym(1.3048).^2/(2*sym(9.81)));
end
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
eqn = 
f
f = 1×29 cell array
Columns 1 through 15 {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} Columns 16 through 29 {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym} {0×1 sym}
Look at the equation. The constant beign added inside the log() is more than 1, so provided the ratio divided by sqrt(x) is not negative, then the value inside the log() must be greater than 1, so the log must be positive. Positive log multiplied by negative 2 is going to be negative, and if x is positive then sqrt(x) is never negative so 1/sqrt(x) is never negative. We thus conclude that if x is positive then the equation cannot hold.
What if x is negative? Then sqrt(x) would be complex valued and you would be taking log of a complex value and trying to match it to -1i / sqrt(-x) . Can those be equal? I suspect not, but I have not investigated to prove it.

Más respuestas (0)

Categorías

Más información sobre Numbers and Precision en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by