%求解Bouc-Wen非线性滞回恢复模型的主函数
function [t,Y] = bouc_wen(tspan)
% tspan 若取二元数组,则该数组的元素决定解算的时间区间
% 若是长度大于2的单调增或减数组,则该数组决定解算时间点
A=1;w=2*pi;phi=0;
alpha=1;beta=1.5;gamma=-0.5;n=1;
%利用4、5阶龙格-库塔法求解微分方程
% Y 微分方程的解,此处为滞回恢复力
[t,Y]=ode45(@dzdt,tspan,0,[],alpha,beta,gamma,n,A,w,phi);
[x,~]=jili(t,A,w,phi); %位移
plot(x,Y)
end
%Bouc-Wen模型
% Bouc-Wen模型由两部分组成:
% 1) 非记忆部分——g(x,dx/dt)
% 2) 记忆部分——z(x)
% 其中z(x)用以下所示的微分方程表达:
% dz/dt = alpha*dx-beta*abs(dx)*abs(z)^(n-1)*z-gamma*dx*abs(z)^n
function dz=dzdt(t,z,alpha,beta,gamma,n,A,w,phi)
% dzdt 计算导函数用的子函数
% t 标量形式的自变量
% z 微分方程的解,此处表示一个值的标量
[~,dx]=jili(t,A,w,phi);
dz = alpha*dx-beta*abs(dx)*abs(z)^(n-1)*z-gamma*dx*abs(z)^n;
end
%求出每一时刻的位移及速度
function [x,dx]=jili(t,A,w,phi)
% t——时刻t
% A——位移幅值
% w——加载频率
% phi——初始相位
x=A*sin(w*t+phi); % x——位移
dx=A*w*cos(w*t+phi); % dx——dx/dt,表示速度
end