ERROR : "Input arguments must be convertible to floating-point numbers"
16 views (last 30 days)
Show older comments
Shimon Katzman
on 22 Nov 2019
Commented: Star Strider
on 23 Nov 2019
Hi everyone, im getting this error:
Error using sym/min (line 98)
Input arguments must be convertible to floating-point numbers.
Error in advencedconcrete32a (line 16)
tension= min(Es*(d-c)/c*epscm*As/1000,fy*As/1000);
i guess the problem is that i use "c" before i solved it, how else can i find "c" from the equation compression= tension?
please help.
thank you very much.
b=300; %mm
d=400; %mm
fc=40; %Mpa
Ecm=22*(fc/10)^0.3*10^3; %Mpa
Es=200000; %Mpa
As=2400; %mm^2
fy=400; %Mpa
epsc1=min(2.8/1000,0.7*fc^0.31/1000);
epscu=3.5/1000;
k=1.05*Ecm*epsc1/fc;
epscm=1.5/1000;
syms c
funC=@(epsc) (k*epsc/epsc1-(epsc/epsc1).^2)./(1+(k-2)*epsc/epsc1);
compression= b*fc*c./epscm*integral(funC,0,epscm)/1000;
tension= min(Es*(d-c)/c*epscm*As/1000,fy*As/1000);
solc= compression==tension;
c=solve(solc,c)
Accepted Answer
Walter Roberson
on 23 Nov 2019
Replace
tension= min(Es*(d-c)/c*epscm*As/1000,fy*As/1000);
with
tension = piecewise(Es*(d-c)/c*epscm*As/1000<=fy*As/1000,Es*(d-c)/c*epscm*As/1000,fy*As/1000)
Replace
funM=@(epsc)(k*epsc/epsc1-(epsc/epsc1).^2)./(1+(k-2)*epsc/epsc1)*(d-c+(c/epscm)*epsc);
with
funM=@(epsc)(k*epsc./epsc1-(epsc./epsc1).^2)./(1+(k-2)*epsc./epsc1).*(d-c+(c./epscm).*epsc);
3 Comments
Walter Roberson
on 23 Nov 2019
Change
funM=@(epsc)(k*epsc./epsc1-(epsc./epsc1).^2)./(1+(k-2)*epsc./epsc1).*(d-c+(c./epscm).*epsc);
M(i)=b*fc*c/epscm*integral(funM,0,epscm)/1000000;
to
funM=@(epsc)(k*epsc./epsc1-(epsc./epsc1).^2)./(1+(k-2)*epsc./epsc1).*(d-c(i)+(c(i)./epscm).*epsc);
M(i)=b*fc*c(i)/epscm*integral(funM,0,epscm)/1000000;
More Answers (1)
Star Strider
on 22 Nov 2019
The min function is not compatible with symbolic objects, for obvious reasons.
Try this instead:
b=300; %mm
d=400; %mm
fc=40; %Mpa
Ecm=22*(fc/10)^0.3*10^3; %Mpa
Es=200000; %Mpa
As=2400; %mm^2
fy=400; %Mpa
epsc1=min(2.8/1000,0.7*fc^0.31/1000);
epscu=3.5/1000;
k=1.05*Ecm*epsc1/fc;
epscm=1.5/1000;
funC=@(epsc) (k*epsc/epsc1-(epsc/epsc1).^2)./(1+(k-2)*epsc/epsc1);
compression = @(c) b*fc*c./epscm*integral(funC,0,epscm)/1000;
tension = @(c) min(Es*(d-c)/c*epscm*As/1000,fy*As/1000);
c=fsolve(@(c) compression(c)-tension(c), 1 )
producing (with this initial parameter estimate):
c =
154.2368
6 Comments
See Also
Categories
Find more on Matrix Computations 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!