matlab计算桁架,MATLAB计算平面桁架体系的程序

global l;

E = 1e6;

A = 1;

p = fopen('INPUTDATA.txt','r');

NP = fscanf(p,'% d',1);

NF = fscanf(p,'% d',1);

MP = zeros(NP,2);

for i =1;NP

MP(i,:) = fscanf(p,'% d',2);

end

NE = fscanf(p,'% d',1);

ME = zeros(NE,2);

for i =1:NE

ME(i,:) = fscanf(p,'% d',2)

end

NR = fscanf(p,'% d',1);

NRR = zeros(NR,2);

for i =1:NR

NRR(i,:) = fscanf(p,'% d',2);

end

NL = fscanf(p,'% d',1);

LL = zeros(NL,2);

for i =1:NL

LL(i,:) = fscanf(p,'% d',2);

end

NDF = NF * NP;

K = zeros(NDF,NDF);

for i =1:NE

l(i) = sqrt((MP(ME(i,2),1) - MP(ME(i,1),1))^2 + (MP(ME(i,2),2) - MP(ME(i,1),2))^2);

v = [MP(ME(i,2),1) - MP(ME(i,1),1),MP(ME(i,2),2) - MP(ME(i,1),2)]/l(i);

ax = v * [1;0];ay = v * [0;1];

T(:,:,i) = [ax,ay,0,0;0,0,ax,ay];

ke = (E * A/l(i)) * [1,-1;-1,1];

Ke = T(:,:,i)' * ke * T(:,:,i);

K(2 * ME(i,1) - 1:2 * ME(i,1),2 * ME(i,1) - 1:2 * ME(i,1))=...

K(2 * ME(i,1) - 1:2 * ME(i,1),2 * ME(i,1) - 1:2 * ME(i,1))+Ke(1:2,1:2);

K(2 * ME(i,1) - 1:2 * ME(i,1),2 * ME(i,2) - 1:2 * ME(i,2))=...

K(2 * ME(i,1) - 1:2 * ME(i,1),2 * ME(i,2) - 1:2 * ME(i,2))+Ke(1:2,3:4);

K(2 * ME(i,2) - 1:2 * ME(i,2),2 * ME(i,1) - 1:2 * ME(i,1))=...

K(2 * ME(i,2) - 1:2 * ME(i,2),2 * ME(i,1) - 1:2 * ME(i,1))+Ke(3:4,1:2);

K(2 * ME(i,2) - 1:2 * ME(i,2),2 * ME(i,2) - 1:2 * ME(i,2))=...

K(2 * ME(i,2) - 1:2 * ME(i,2),2 * ME(i,2) - 1:2 * ME(i,2))+Ke(3:4,3:4);

end

P = zeros(2 * NP,1);

for i = 1:NL

P(LL(i,1)) = LL(i,2);

end

for i = 1:NR

j = NRR(i,1);

K(j,j) = 10^30;

end

for i =1:NR

j = NRR(i,1);

P(j) = 10^30 * NRR(i,2);

end

u = K^( -1) * P;

fprintf('各自由度位移为:/n');

fprintf('% 1.4f/n',u);

fprintf('各杆单元内力为:/n');

for i = 1:NE

D = (E/(1-0.3^2))*[1,0.3,0;0.3,1,0;0,0,(1 - 0.3)/2];

B = [ -1/l(i),0,1/l(i),0;0,0,0,0;0, -1/l(i),0,1/l(i)];

uii = [ u( 2 * ME(i,1));u(2 * ME(i,1));u(2 * ME(i,2) - 1);u(2 * ME(i,2))];

ui = T(:,:,i) * uii;

F =E * (ui(2)-ui(1))/l(i);

fprintf('% 3.4f/n',F);

end

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值