ERROR : "Input arguments must be convertible to floating-point numbers"
    6 次查看(过去 30 天)
  
       显示 更早的评论
    
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)
采纳的回答
  Walter Roberson
      
      
 2019-11-23
        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 个评论
  Walter Roberson
      
      
 2019-11-23
				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;
更多回答(1 个)
  Star Strider
      
      
 2019-11-22
        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 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


