matlab求微分方程的系数,如何利用matlab求解矩阵系数的二阶微分方程
M=[2,0;0 1 ]; %质量矩阵
K=[6 -2;-2 4]; %刚度矩阵
a=0;b=0;
C=a*K+b*M;
dt=0.28;
t=0:dt:2.8;
ft0=zeros(length(K),length(t));
for i=1:length(t)
ft0(1,i)=10; %在节点4的竖直方向加大小为200N的阶跃力
end
dsp=zeros(length(K),length(t)); % 位移
vel=zeros(length(K),length(t)); % 速度
acc=zeros(length(K),length(t)); % 加速度
%--------------------------------------------------------------------------
% (2) Newmark
alpha=0.3; beta=0.6; % 稳定条件
acc(:,1)=inv(M)*(ft0(:,1)-K*dsp(:,1)-C*vel(:,1)); % 计算初始加速度 (t=0)
ekk=K+M/(alpha*dt^2)+C*beta/(alpha*dt); % 计算有效刚度矩阵
for it=2:length(t)-1 % 时间步循环
cfm=dsp(:,it)/(alpha*dt^2)+vel(:,it)/(alpha*dt)+acc(:,it)*(0.5/alpha-1);
cfc=dsp(:,it)*beta/(alpha*dt)+vel(:,it)*(beta/alpha-1)...
+acc(:,it)*(0.5*beta/alpha-1)*dt;
efd=ft0(:,it)+M*cfm+C*cfc; % 计算有效力矢量
dsp(:,it+1)=inv(ekk)*efd; % t+dt时刻的位移
acc(:,it+1)=(dsp(:,it+1)-dsp(:,it))/(alpha*dt^2)-vel(:,it)/(alpha*dt)...
-acc(:,it)*(0.5/alpha-1); % t+dt时刻的加速度
vel(:,it+1)=vel(:,it)+acc(:,it)*(1-beta)*dt+acc(:,it+1)*beta*dt; % t+dt时刻的速度
end
plot(t, dsp(2,:),'-b*')
hold on
xlabel('Time(seconds)')
ylabel(' Vertical displ. (m)')
% (2) Wilson
%--------------------------------------------------------------------------
theta=1.4; % 稳定条件参数
acc(:,1)=inv(M)*(ft0(:,1)-K*dsp(:,1)-C*vel(:,1)); % 计算初始加速度 (t=0)
ekk=K+M*(6/(theta*dt)^2)+C*(3/(theta*dt)); % 计算有效刚度矩阵
for it=2:length(t)-1
cfm=dsp(:,it)*(6/(theta*dt)^2)+vel(:,it)*(6/(theta*dt))+2*acc(:,it);
cfc=dsp(:,it)*(3/(theta*dt))+2*vel(:,it)+acc(:,it)*(theta*dt/2);
efd=ft0(:,it)+theta*(ft0(:,it+1)-ft0(:,it))+M*cfm+C*cfc; %计算有效力矢量
dtheta=inv(ekk)*efd; % t+ dt时刻的位移
acc(:,it+1)=(dtheta-dsp(:,it))*(6/(theta^3*dt^2))...
-vel(:,it)*(6/(theta^2*dt))+acc(:,it)*(1-3/theta); % t+dt时刻的加速度
vel(:,it+1)=vel(:,it)+acc(:,it+1)*dt/2+acc(:,it)*dt/2; % t+dt时刻的速度
dsp(:,it+1)=dsp(:,it)+vel(:,it)*dt...
+(acc(:,it+1)+2*acc(:,it))*(dt^2/6); % t+dt时刻的位移
end
plot(t, dsp(2,:),'-g*')
hold on
xlabel('Time(seconds)')
ylabel(' Vertical displ. (m)')
%--------------------------------------------------------------------------
% (2) 振型叠加法
%施加不平衡激振力
t=t';
[V,D]=eig(K,M); % 计算特征值和特征向量
[lambda,ki]=sort(diag(D)); % 给特征值和特征向量排序
omega=sqrt(lambda); % 角频率w.
omega1=sqrt(lambda)/(2*pi); % 固有频率 Hz.
V1=V(:,ki);
h=V1'*M*V1;
Factor=diag(V1'*M*V1); %模态质量
Vnorm=V1*inv(sqrt(diag(Factor))); % 正则化振型向量
VnormK=diag(Vnorm'*K*Vnorm); %模态刚度
omega0=diag(sqrt(Vnorm'*K*Vnorm)) ; % 正则化模态刚度
VnormM=diag(Vnorm'*M*Vnorm); %正则化模态质量
Fnorm=Vnorm'*ft0 ; % 模态力矢量
Modamp=Vnorm'*(a*M+b*K)*Vnorm; % 模态阻尼矩阵
zeta=diag((1/2)*Modamp*inv(diag(omega0))); % 阻尼比
%--------------------------------------------------------------------------
% % (4) 模态坐标的响应
%--------------------------------------------------------------------------
q0=zeros(length(K),1);
dq0=zeros(length(K),1); % 初始化位移和速度
eta0=Vnorm'*M*q0; deta0=Vnorm'*M*dq0; %2.2-53% 初始条件模态坐标的位移和速度
eta=zeros(length(t),length(K)); % %初始化位移2.2-52
for i=1:length(K) % t(i)时刻的响应
phase0=omega0(i)*t; %w*t omega0为无阻尼固有频率
omegad=omega(i)*sqrt(1-zeta(i)^2);
phase=omegad*t; %wd*t其中(omegad为有阻尼固有频率)
Exx=exp(-zeta(i)*omega(i)*t); %中间变量
C1=eta0(i); %初始位移
C2=(deta0(i)+eta0(i)*zeta(i)*omega0(i))/omegad; %中间变量
D1=zeta(i)*omega(i)/omegad;
II=ones(length(t),1);
XX=Fnorm(i)/(omegad^2+zeta(i)^2*omega(i)^2);
eta(:,i)=C1*Exx.*cos(phase)+C2*Exx.*sin(phase)+ XX*(II-Exx.*cos(phase)-D1*Exx.*sin(phase));%有阻尼系统
% eta(:,i)=Fnorm(i)/((omega(i))^2)*(1-cos(omega(i)*t)); %无阻尼系统
end
%--------------------------------------------------------------------------
% (6) 将模态坐标转化到物理坐标系
%--------------------------------------------------------------------------
eta=eta'; %模态坐标
y=Vnorm*eta; %物理坐标
plot(t, y(2,:),'-r*')
xlabel('Time(seconds)')
ylabel(' Vertical displ. (m)')
matlab求微分方程的系数,如何利用matlab求解矩阵系数的二阶微分方程相关推荐
- 利用matlab求零输入响应波形,实验3 利用matlab求LTI连续系统的响应
实验3 利用matlab求LTI连续系统的响应 一. 实验目的: 1. 了解LTI系统的冲激响应h(t)及matlab实现: 2. 了解LTI系统的阶跃响应g(t)及matlab实现: 3. 了解LT ...
- matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...
- 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
实验二 利用matlab进行系统的时域分析 实验二 利用MATLAB进行系统的时域分析 1.实验目的 在理论学习的基础上,通过本实验熟悉LTI连续时间系统的时域分析方法, 熟悉系统的零输入响应.零状态 ...
- 在matlab中实现累乘,如何利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现...
设计要求 利用matlab设计一个线性相位FIR带通滤波器,并在FPGA上实现. 1.滤波器指标:过渡带带宽分别为100~300HZ,500~700HZ,阻带允许误差为0.02,通带允许误差为0.01 ...
- matlab求z变换的tat,用matlab求z变换感悟
如何用matlab实现Z变换 答:h = tf([1 0] , [1 1 1]); zh = c2d(h, 0. 00005,'zoh') [num den] = tfdata(zh, 'v') [z ...
- matlab系列之(一)——利用matlab实现任意两个多项式相加
上课时的课程作业,后续我会持续整理出来注释好,供大家共同学习!致谢课程老师! 一.问题描述 输入任意两个多项式,相加后输出结果: 二.问题分析 输入多项式可以采用输入系数矩阵或完整多项式的方式,为了符 ...
- 用matlab求上三角矩阵的逆,现代科学运算—MATLAB语言与应用-中国大学mooc-题库零氪...
第1章 绪论 01-01 本课程的主要内容随堂测验 1. 2. 01-02 为什么学习计算机数学语言随堂测验 1. 2. 01-03 解析解与数值解随堂测验 1. A. B. C. D. 2. 01- ...
- matlab求非圆齿轮的节曲线,基于MATLAB的非圆齿轮节曲线设计
第 34卷 第 4期 2016年 4月 坎 倾县 备 MACHINERY & ELECTRONICS Vo1.34 NO.4 Apr.2016 基于 MATLAB的非圆齿轮节曲线设计 张 健 ...
- matlab抓取网页信息,如何利用Matlab抓取网页数据
如何利用Matlab抓取网页数据 2019-01-01 %朋友需要做金融方面的分析,要求从网站上下载大量的数据,一个一个复制粘贴太费事.我写了一个简单的网络爬虫,主要用到正则表达式,可以自动下载网页源 ...
- matlab 随机相位的正弦信号,利用MATLAB绘制随机相位正弦波.docx
实验二 利用MATLAB绘制随机相位正弦波的均值,方差和自相关函数的图像[实验目的]通过绘制图像,深入理解随机相位正弦波的均值,方差和自相关函数.[实验学时]课外完成[实验准备]1.熟悉随机相位正弦波 ...
最新文章
- 近期数据挖掘学习_计划安排及相关资料(定期更新)
- 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
- bs4之标签树的下行遍历
- 2019\Province_C_C++_B\试题A-组队
- Linux 解决ssh连接慢的问题
- Android -- 获取摄像头帧数据解码
- 微信小程序Mustache语法
- Execution default of goal org.springframework.boot:spring-boot-maven-plugin
- android select下拉列表_Python+selenium自动化之下拉列表操作(一)
- 自学python要多久-怎么自学python,大概要多久?
- 使用Homebrew安装Git与Github在idea中的配置
- python中debug和run有什么区别_android应用程序开发中run和debug 有什么区别?
- 基于Java技术的汽车维修管理软件的设计与实现
- JAVA POI 设置 Word 纸张大小为 A3
- 同比 数据模型 环比_使用数据分析软件进行同比和环比数据分析
- Arcmap 安装完后使用出现visual fortran run-time error的解决方法
- C++ 调用打印机 打印一段文字
- 【删文说明】谁说本科妹纸不能拿 BAT SP Offer?
- 清华学计算机的住在哪个公寓,清华大学周边住宿攻略_清华大学附近住哪里好?...
- 自动关闭Office2010 OSPPSVC.EXE