找回密码
 注册
Simdroid-非首页
查看: 69|回复: 0

有大侠可以帮忙一下吗,为什么我的编程一直在循环,是不是while出问题了,求帮助啊

[复制链接]
发表于 2011-8-18 23:48:35 | 显示全部楼层 |阅读模式 来自 华南理工大学
b=1000
h=2000
fc=14.3
ec=0.00164
ft=1.43
et=65*10^(-6)*ft^0.54   
at=0.312*ft^2   
n=50     
fy=360
Es=2*10^5
es=fy/Es

  r=zeros(1,100)  
for k=1:1:100
     o=(5e-4)*k
     x1=0,x2=h,df=10
  while abs(df)>10
    x0=(x1+x2)/2,x=h-x0  

  s=zeros(1,(round (x0/n)-1))  ,t=zeros(1,(round (x0/n)-1))
  for p=1:1:(round (x0/n)-1)
    i=n*p
    e1=-((i-n/2)-x0)*o        
    e2=-(i-x0)*o               
      if i==50 | i==1950
            steelarea=8844
      elseif i==150 | i==250 | i==350 | i==450 | i==550 | i==650 | i==750 | i==850 | i==950 | i==1050 | i==1150 | i==1250 | i==1350 | i==1450 | i==1550 | i==1650 | i==1750 | i==1850
            steelarea=1608      
      else
            steelarea=0
      end

         if e1<=ec
             concretecompression=fc*(0.03*(e1/ec)^3-1.06*(e1/ec)^2+2.03*(e1/ec))      
         else
             concretecompression=(e1/ec)*fc/(1.36*(e1/ec-1)^2+e1/ec)
         end
         
         if e2<=es                                       
            steelcompression=Es*e2
         elseif e2<0.01
            steelcompression=fy
         else
            steelcompression=0
         end         
   
      
         df1=(concretecompression*b*n+steelcompression*steelarea)/1000
         s(p)=df1
         dM1=-df1*(i-x0)/1000
         t(p)=dM1
   end
      
  

   y=zeros(1,(round (x/n)-1))  ,z=zeros(1,(round (x/n)-1))
   for q=1:1:(round (x/n)-1)
     j=n*q
     e3=((j-n/2)-x)*o
     e4=(j-x)*o

      if j==50 | j==1950
            steelarea=8844
      elseif j==150 | j==250 | j==350 | j==450 | j==550 | j==650 | j==750 | j==850 | j==950 | j==1050 | j==1150 | j==1250 | j==1350 | j==1450 | j==1550 | j==1650 | j==1750 | j==1850
            steelarea=1608      
      else
            steelarea=0
      end

       if e3<=et
          concretetension=(1.2*(e3/et)-0.2*(e3/et)^6)*ft
       else
          concretetension=(e3/et)*ft/(at*(e3/et-1)^1.7+e3/et)
       end
  
      if e4<=es
          steeltension=Es*e4
      elseif e4<0.01
          steeltension=fy
      else
            steeltension=0
      end

         df2=(concretetension*b*n+steeltension*steelarea)/1000   
         y(q)=df2
         dM2=-df2*(j-x)/1000
         z(q)=dM2
  end
         f1=sum(r(:))
         M1=sum(s(:))
         f2=sum(y(:))
         M2=sum(z(:))         
        df=f1-f2
        M=M1+M2


    if df>0
        x1=x0
     else
        x2=x0
    end   
end
r(k)=M  
end
r
o=5e-4:5e-4:5e-2
plot(0,r)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 10:26 , Processed in 0.031968 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表