Newmark数值分析法matlab程序

clc
clear
M=[1,2,3,4];
m=diag(M); %质量对角线矩阵
k=[ 800 -800 0 0 ;
-800 2400 -1600 0 ;
0 -1600 4800 -3200 ;
0 0 -3200 8000 ]; %计算刚度矩阵
c=0.05m+0.02k;%c=2m0.05*sqrt(k/m) ;
f0= 100;
t1=5; %力的作用时间
nt=2000; %分2000步完成
dt=0.01; %时间步长
alfa=0.25; %γ=0.25
beta=0.5; %β=0.5

a0=1/alfa/dt/dt; %
a1=beta/alfa/dt; %
a2=1/alfa/dt; %
a3=1/2/alfa-1; %
a4=beta/alfa-1; %
a5=dt/2*(beta/alfa-2); %
a6=dt*(1-beta); %
a7=dtbeta; %
d=zeros(4,nt); %初位移为0
v=zeros(4,nt); % 初速度为0
a=zeros(4,nt); % 初加速度为0
for i=2:nt
t=(i-1)dt;
if (t<t1),
f=[f0
sin(4
pit/t1);0;0;0]; %f=[300sin(6pit)-50cos(3pit);0;0;0]; %力作用时间内对结构进行加载
else
f=[0;0;0;0]; %力作用时间外结构不受力
end
ke=k+a0
m+a1c; % 有效刚度矩阵
fe=f+m
(a0d(:,i-1)+a2v(:,i-1)+a3a(:,i-1))+c(a1d(:,i-1)+a4v(:,i-1)+a5a(:,i-1));
% t+dt时刻的有效荷载
d(:,i)=ke\fe;%d(:,i)=inv(ke)fe; %求解t+dt时刻的位移
a(:,i)=a0
(d(:,i)-d(:,i-1))-a2
v(:,i-1)-a3a(:,i-1); %计算t+dt时刻的加速度
v(:,i)=v(:,i-1)+a6
a(:,i-1)+a7*a(:,i); %计算t+dt时刻的速度
end

T=(0:dt:19.99); %离散系统dt为采样周期 19.99为终端时间
close all

figure %控制窗口数量
plot(T,d(1,:)) %绘制位移函数图像
title(‘各质点位移总图’) %添加标题为各质点位移总图
xlabel(‘s’) %对x轴进行标注为时间(s)
ylabel(‘m’) %对y轴进行标注为位移(m)
grid %显示画图中的个网线

figure
plot(T,a) %绘制加速度函数图像
title(‘加速度总图’) %添加标题为各质点加速度总图
legend(‘a1’,‘a2’,‘a3’,‘a4’)
xlabel(‘s’) %对x轴进行标注为时间(s)
ylabel(‘m/s^2’) %对y轴进行标注为加速度(m/s2)
grid

figure
plot(T,v) %绘制速度函数图像
title(‘速度总图’) %添加标题为各质点速度总图
legend(‘v1’,‘v2’,‘v3’,‘v4’)
xlabel(‘s’) %对x轴进行标注为时间(s)
ylabel(‘m/s)’) %对y轴进行标注为加速度(m/s)
grid

以下是使用Newmark编写的MATLAB程序: ```matlab clc clear % 定义质量矩阵 M = \[1, 2, 3, 4\]; m = diag(M); % 定义刚度矩阵 K = \[800, -800, 0, 0; -800, 2400, -1600, 0; 0, -1600, 4800, -3200; 0, 0, -3200, 8000\]; % 计算阻尼矩阵 C = 0.05 * m + 0.02 * K; % 定义力的作用时间和大小 F0 = 100; t1 = 5; % 定义时间步长和总步数 dt = 0.01; nt = 2000; % 定义Newmark参数 gamma = 0.5; beta = 0.25; % 初始化加速度、速度和位移向量 a = zeros(length(M), nt); v = zeros(length(M), nt); d = zeros(length(M), nt); % 计算Newmark系数 a0 = 1 / (beta * dt^2); a1 = gamma / (beta * dt); a2 = 1 / (beta * dt); a3 = 1 / (2 * beta) - 1; a4 = gamma / beta - 1; a5 = dt / 2 * (gamma / beta - 2); a6 = dt * (1 - gamma); a7 = dt * gamma; % 初始化时间向量 t = linspace(0, nt * dt, nt); % 计算力的时间函数 F = zeros(length(M), nt); for i = 1:nt if t(i) <= t1 F(:, i) = F0; end end % 进行Newmark计算 for i = 2:nt a(:, i) = inv(m + a0 * C + a0 * K) * (F(:, i) - C * (a1 * v(:, i-1) + a2 * a(:, i-1)) - K * d(:, i-1)); v(:, i) = v(:, i-1) + a1 * a(:, i) + a2 * a(:, i-1); d(:, i) = d(:, i-1) + a3 * a(:, i) + a4 * a(:, i-1) + a5 * v(:, i-1) + a6 * v(:, i) + a7 * a(:, i); end % 绘制位移函数图像 figure plot(t, d(1, :)) title('各质点位移总图') xlabel('s') ylabel('m') grid ``` 这个程序使用Newmark来计算四层框架结构在顶部受到简谐荷载作用时的响应。程序首先定义了质量矩阵、刚度矩阵和阻尼矩阵。然后根据给定的力的作用时间和大小,计算力的时间函数。接下来,程序使用Newmark进行计算,得到加速度、速度和位移的时间历程。最后,程序绘制了位移函数的图像。 #### 引用[.reference_title] - *1* [采用Newmark求解振动方程——MATLAB](https://blog.csdn.net/weixin_44563389/article/details/86596159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Newmark数值分析matlab程序](https://blog.csdn.net/qq_41621140/article/details/113865719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1352120589

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值