ERROR : "Input arguments must be convertible to floating-point numbers"
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Shimon Katzman
 am 22 Nov. 2019
  
    
    
    
    
    Kommentiert: Star Strider
      
      
 am 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)
Akzeptierte Antwort
  Walter Roberson
      
      
 am 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 Kommentare
  Walter Roberson
      
      
 am 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;
Weitere Antworten (1)
  Star Strider
      
      
 am 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 Kommentare
Siehe auch
Kategorien
				Mehr zu Calculus finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


