function varargout = shiyan(varargin)
% SHIYAN M-file for shiyan.fig
% SHIYAN, by itself, creates a new SHIYAN or raises the existing
% singleton*.
%
% H = SHIYAN returns the handle to a new SHIYAN or the handle to
% the existing singleton*.
%
% SHIYAN('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in SHIYAN.M with the given input arguments.
%
% SHIYAN('Property','Value',...) creates a new SHIYAN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before shiyan_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to shiyan_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help shiyan
% Last Modified by GUIDE v2.5 19-Dec-2010 01:05:22
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @shiyan_OpeningFcn, ...
'gui_OutputFcn', @shiyan_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before shiyan is made visible.
function shiyan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to shiyan (see VARARGIN)
% Choose default command line output for shiyan
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes shiyan wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = shiyan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
n=str2num(get(handles.edit1,'string'));
b=str2num(get(handles.edit2,'string'));
L=str2num(get(handles.edit3,'string'));
H=str2num(get(handles.edit4,'string'));
P=str2num(get(handles.edit11,'string'));
E=str2num(get(handles.edit13,'string'));
d=2*n+2;
g=4*n;
K=zeros(4*n+4);
hold off;%%%dengai
for a=1:1:n
i=2*a-1;
j=2*a+1;
T=[1 0 0 0;0 0 1 0];
KE1=E*b*b*[1 -1;-1 1]/L/1000;
KX=T'*KE1*T;
KX1=KX(1:2,1:2);
KX2=KX(1:2,3:4);
KX4=KX(3:4,3:4);
KX3=KX2';
K(2*i-1:2*i,2*i-1:2*i)=KX1+K(2*i-1:2*i,2*i-1:2*i);
K(2*i-1:2*i,2*j-1:2*j)=KX2+K(2*i-1:2*i,2*j-1:2*j);
K(2*j-1:2*j,2*i-1:2*i)=KX3+K(2*j-1:2*j,2*i-1:2*i);
K(2*j-1:2*j,2*j-1:2*j)=KX4+K(2*j-1:2*j,2*j-1:2*j);
x=[0,L*n];
y=[0,0];
plot(x,y);
hold on;
end
for a=1:1:n
i=2*a;
j=2*a+2;
KS=KX;
KS1=KS(1:2,1:2);
KS2=KS(1:2,3:4);
KS3=KS2';
KS4=KS(3:4,3:4);
K(2*i-1:2*i,2*i-1:2*i)=KS1+K(2*i-1:2*i,2*i-1:2*i);
K(2*i-1:2*i,2*j-1:2*j)=KS2+K(2*i-1:2*i,2*j-1:2*j);
K(2*j-1:2*j,2*i-1:2*i)=KS3+K(2*j-1:2*j,2*i-1:2*i);
K(2*j-1:2*j,2*j-1:2*j)=KS4+K(2*j-1:2*j,2*j-1:2*j);
y=[H,H];
plot(x,y);
hold on;
end
for a=1:1:n
i=2*a+1;
j=i+1;
T1=[0 1 0 0;0 0 0 1];
KY=T1'*KE1*T1*L/H;
KY1=KY(1:2,1:2);
KY2=KY(1:2,3:4);
KY3=KY2';
KY4=KY(3:4,3:4);
K(2*i-1:2*i,2*i-1:2*i)=KY1+K(2*i-1:2*i,2*i-1:2*i);
K(2*i-1:2*i,2*j-1:2*j)=KY2+K(2*i-1:2*i,2*j-1:2*j);
K(2*j-1:2*j,2*i-1:2*i)=KY3+K(2*j-1:2*j,2*i-1:2*i);
K(2*j-1:2*j,2*j-1:2*j)=KY4+K(2*j-1:2*j,2*j-1:2*j);
c=a*L;
x=[c,c];
y=[0,H];
plot(x,y);
hold on;
end
for a=1:1:n
if rem(a,2)==0
i=2*a;
j=i+1;
sita=-atan(H/L);
T2=[cos(sita) sin(sita) 0 0;0 0 cos(sita) sin(sita)];
KE2=E*b*b*[1,-1;-1,1]/sqrt(L*L+H*H)/1000;
KZ=T2'*KE2*T2;
KZ1=KZ(1:2,1:2);
KZ2=KZ(1:2,3:4);
KZ3=KZ2';
KZ4=KZ(3:4,3:4);
K(2*i-1:2*i,2*i-1:2*i)=KZ1+K(2*i-1:2*i,2*i-1:2*i);
K(2*i-1:2*i,2*j-1:2*j)=KZ2+K(2*i-1:2*i,2*j-1:2*j);
K(2*j-1:2*j,2*i-1:2*i)=KZ3+K(2*j-1:2*j,2*i-1:2*i);
K(2*j-1:2*j,2*j-1:2*j)=KZ4+K(2*j-1:2*j,2*j-1:2*j);
x=[(a-1)*L,a*L];
y=[H,0];
plot(x,y);
hold on;
else
i=2*a-1;
j=i+3;
sita=atan(H/L);
T3=[cos(sita) sin(sita) 0 0;0 0 cos(sita) sin(sita)];
KE2=E*b*b*[1,-1;-1,1]/sqrt(L*L+H*H)/1000;
KZ=T3'*KE2*T3;
KZ1=KZ(1:2,1:2);
KZ2=KZ(1:2,3:4);
KZ3=KZ2';
KZ4=KZ(3:4,3:4);
K(2*i-1:2*i,2*i-1:2*i)=KZ1+K(2*i-1:2*i,2*i-1:2*i);
K(2*i-1:2*i,2*j-1:2*j)=KZ2+K(2*i-1:2*i,2*j-1:2*j);
K(2*j-1:2*j,2*i-1:2*i)=KZ3+K(2*j-1:2*j,2*i-1:2*i);
K(2*j-1:2*j,2*j-1:2*j)=KZ4+K(2*j-1:2*j,2*j-1:2*j);
x=[(a-1)*L,a*L];
y=[0,H];
plot(x,y)
hold on;
end
end
K; %总体刚度矩阵
K1=K(5:4*n+4,5:4*n+4);%划行划列。自己知道1、2点的位移全为零
P1=zeros(4*n,1);%
delta=zeros(4*n+4,1);
P1(4*n,1)=-P;
delta1=inv(K1)*P1;
%disp('各节点位移:')
delta(5:4*n+4,1)=delta1;%%暂时更改;
%disp('各节点受外力:')
P2=K*delta;%%%暂时更改;
i=1;
delta2=zeros(4,1);
sigma=zeros(4*n,1);
for a=1:4:4*n-3
j=i+2;
delta2(1:2,1)=delta(2*i-1:2*i,1);
delta2(3:4,1)=delta(2*j-1:2*j,1);
delta0=T*delta2;
sigma1=E*1000*(delta0(2,1)-delta0(1,1))/L;
sigma(a,1)=sigma1;
x=[(i-1)*L/2+delta(2*i-1)*1000,(j-1)*L/2+delta(2*j-1)*1000];
y=[delta(2*i)*1000,delta(2*j)*1000];
plot(x,y);
hold on;
i=j;
end
i=2;
for a=3:4:4*n-1
j=i+2;
delta2(1:2,1)=delta(2*i-1:2*i,1);
delta2(3:4,1)=delta(2*j-1:2*j,1);
delta0=T*delta2;
sigma1=E*1000*(delta0(2,1)-delta0(1,1))/L;
sigma(a,1)=sigma1;
x=[(i-2)*L/2+delta(2*i-1)*1000,(j-2)*L/2+delta(2*j-1)*1000];
y=[H+delta(2*i)*1000,H+delta(2*j)*1000];
plot(x,y);
hold on;
i=j;
end
i=3;
for a=4:4:4*n
j=i+1;
delta2(1:2,1)=delta(2*i-1:2*i,1);
delta2(3:4,1)=delta(2*j-1:2*j,1);
delta0=T1*delta2;
sigma1=E*1000*(delta0(2,1)-delta0(1,1))/H;
sigma(a,1)=sigma1;
x=[(i-1)*L/2+delta(2*i-1)*1000,(j-2)*L/2+delta(2*j-1)*1000];
y=[delta(2*i)*1000,H+delta(2*j)*1000];
plot(x,y);
hold on;
i=i+2;
end
i=1;
t=0;
for a=2:4:4*n-2
if t==0
j=i+3;
delta2(1:2,1)=delta(2*i-1:2*i,1);
delta2(3:4,1)=delta(2*j-1:2*j,1);
delta0=T3*delta2;
sigma1=E*1000*(delta0(2,1)-delta0(1,1))/sqrt(L*L+H*H);
sigma(a,1)=sigma1;
t=1;
x=[(i-1)*L/2+delta(2*i-1)*1000,(j-2)*L/2+delta(2*j-1)*1000];
y=[delta(2*i)*1000,H+delta(2*j)*1000];
plot(x,y);
hold on;
i=j;
continue
end
if t==1
j=i+1;
delta2(1:2,1)=delta(2*i-1:2*i,1);
delta2(3:4,1)=delta(2*j-1:2*j,1);
delta0=T2*delta2;
sigma1=E*1000*(delta0(2,1)-delta0(1,1))/sqrt(L*L+H*H);
sigma(a,1)=sigma1;
x=[(i-2)*L/2+delta(2*i-1)*1000,(j-1)*L/2+delta(2*j-1)*1000];
y=[H+delta(2*i)*1000,delta(2*j)*1000];
plot(x,y);
hold on;
i=j;
t=0;
end
end
N=b*b*sigma/1000000;
%disp('各杆中的应力状态:')
%sigma%各杆中的应力状态% 暂时更改'
%disp
评论0