ea708.m

来自「matlab 在线性代数中的应用 利用matlab实现可以提高对所学知识的理解 」· M 代码 · 共 22 行

M
22
字号
% 《工程线性代数(MATLAB版)》第七章例题7.8程序ea708
%
m1=1; m2=9; k1 = 4; k2=2; 			% 输入各原始参数
x0 = [1;0]; xd0 = [0;-1]; tf= 20; 
M = [m1,0;0,m2]; K = [k1+k2, -k2; -k2, k2]; 		% 构成参数矩阵
K0=inv(M)*K
[u,L] = eig (K0 );					% 求广义特征向量和特征值
t=linspace(0,tf,101);x=zeros(2,101);		% 时间分割和输出变量初始化
for s=1:2						% 分别处理两个特征值
   alfa=sqrt(u(:,s)'*M*u(:,s));		% 解耦后的质量
   u(:,s)=u(:,s)/alfa;			% 把特征向量[ui]归一化
   w(s)=sqrt(L(s,s));		% 分别求对应于两个特征值的分量
   xt=u(:,s)*(u(:,s)'*M*x0*cos(w(s)*t)+u(:,s)'*M*xd0/w(s)*sin(w(s)*t));
   x=x+xt;					% 把两个分量累加
end
for r=1:2			% 绘图
   subplot(2,1,r)
   plot(t,x(r,:)),grid
%   xlabel('时间,秒');
%   ylabel(['响应x',num2str(r)]);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?