分类: 他山石 |
下面是求解结构动力学方程的精细积分计算程序:
精细积分的优点见钟万勰教授的论著。
%clear;
%A=zeros(2);
%C=A;
%D=[0.5,0;0,1];
%B=[-6,2;2,-4];
%C=A;
%D=[0.5,0;0,1];
%B=[-6,2;2,-4];
%定义质量矩阵
M = [1 0 0;0 1 0;0 0 6];
%定义刚度矩阵
K = [10 1 0; 1 10 1;0 1 10];
M = [1 0 0;0 1 0;0 0 6];
%定义刚度矩阵
K = [10 1 0; 1 10 1;0 1 10];
%定义比例阻尼
alpha = 0.01;
bita = 0.02;
G = alpha*M+bita*K;
alpha = 0.01;
bita = 0.02;
G = alpha*M+bita*K;
iM = inv(M);
A = -0.5*iM*G;
B = 0.25*G*iM*G-K;
C = -0.5*G*iM;
D = iM;
B = 0.25*G*iM*G-K;
C = -0.5*G*iM;
D = iM;
%
%A=zeros(3);
%C=A;
%D=[0.5 0 0;0 1 0;0 0 2];
%B=[-6 2 2;2 -4 2; 2 2 -5];
%A=zeros(3);
%C=A;
%D=[0.5 0 0;0 1 0;0 0 2];
%B=[-6 2 2;2 -4 2; 2 2 -5];
%定义初始时刻的外力向量
%f0=[0;0;0;10];
f0=[0 0 0 10 1 20]';
%f0=[0;0;0;10];
f0=[0 0 0 10 1 20]';
f1=zeros(size(f0));
%形成哈密尔顿矩阵
H=[A,D;B,C];
H=[A,D;B,C];
%计算的结束时间
tf=20;
tf=20;
%下面的定义是为了验证在不同步长情况下,精细积分的精度之间的差别
step=[2,0.5,0.1]; % different step size
step=[2,0.5,0.1]; % different step size
%这一般是精细积分计算的缺省值
N=20;
N=20;
%figure;
grid;
hold on;
grid;
hold on;
str=['o','x','b-'];
for jj = 1:3
[jj tf/step(jj)] %time,vector的维数和tf/step(jj)的值相等
[time,vector]=jxjf1(H,f0,f1,step(jj),tf,N);
plot(time,vector(:,1),'r-');
plot(time,vector(:,2),'g-');
plot(time,vector(:,3),'b-');
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [time,matrix]=jxjf1(H,f0,f1,time_step,tf,N)
%
% time:计算的时间序列,一列
% matrix:计算的结果,矩阵,按照列分为两半,前一半为节点位移的响应,前一半为节点动量的响应,
%
%
% time:计算的时间序列,一列
% matrix:计算的结果,矩阵,按照列分为两半,前一半为节点位移的响应,前一半为节点动量的响应,
%
end
前一篇:著名的科学家和工程师(2/2)
后一篇:一个点列的产生程序(Java)