function[t,x,v]= FMSDS(m,b,k,alpha,beta,tau,dtau,x0,v0,f)
%
% DESCRIPTION:
%
% Function returns numerical solution of the
% Fraction Mass-Spring-Damper System (FMSDS)
% using Grunwald-Letnikov derivative definition.
%
% |
% /| Damper --------
% /| -- | |
% /|--- |-------| Mass | Force
% /| -- b | m |<--------> f
% /| Spring | |
% /|-/\/\/\/\---| |
% /| k --------
% /| | Displacement, x
% /|<------------------------------>
% /| | Velocity, v
% 0
%
% Fractional differential equation:
%
% d^alpha d^beta
% m ---------- x(t) + b -------- x(t) + k x(t) = f(t) for 0 <= t <= tau
% d t^alpha d^beta alpha > beta
%
% Initial conditions:
% x(0) = x0
% x'(0) = v(0) = v0
%
% Grunwald-Letnikov definition:
%
% Nf
% sum b_j.y(t-j.dtau)
% d^alpha j=0
% --------- y(t) = -------------------
% d t^alpha dtau^alpha
%
% Difference equation :
%
% p p
% sum bc_j.x(p-j) sum cc_j.x(p-j)
% j=0 j=0
% m --------------- + b --------------- + k.x(p) = f(p)
% dtau^alpha dtau^beta
%
% or
% p
% m.dtau^(-alpha) ( bc_0.x(p) + sum bc_j.x(p-j) ) +
% j=1
%
% p
% + b.dtau^(-beta) ( cc_0.x(p) + sum cc_j.x(p-j) ) + k.x(p) = f(p)
% j=1
%
% or
% p p
% x(p)=(f(p)-m.dtau^(-alpha).sum bc_j.x(p-j)-b.dtau^(-beta).sum cc_j.x(p-j))/
% j=1 j=1
%
% (m.dtau^(-alpha).bc_0 + b.dtau^(-beta).cc_0 + k)
%
% INPUTS:
% m - mass [ kg ]
% b - damper coefficient [ kg/s ]
% k - stiffness (or spring constant) [ kg/s^2 ]
% alpha - fractional-order derivative [ - ]
% beta - fractional-order derivative [ - ]
% tau - simulation time [ s ]
% dtau - time step [ s ]
% x0 - initial displacement [ m ]
% v0 - initial velocity [ m/s ]
% f - force [ N ]
%
% OUTPUTS:
% t - vector of time [ s ]
% x - vector of distance [ m ]
% v - vector of velocity [ m/s ]
%
% AUXILIARY VARIABLES:
% n - length of time vector
% p, i, j - index
% bc, cc - binomial coefficients
% s1, s2 - sum
%
% Copyright (C) 2020, Technical University of Kosice
% Author : Terpak Jan
% Revision: 17.02.2020
%
n = tau/dtau+1;
t(1) = 0.0;
x(1) = x0;
v(1) = v0;
t(2) = dtau;
x(2) = x(1) + dtau*v(1);
v(2) = ( x(2) - x(1) )/dtau;
p = 1;
for i = 3:n
p = p + 1;
t(i) = (i-1)*dtau;
bc = zeros(1,p+1);
cc = zeros(1,p+1);
bc(1) = 1;
cc(1) = 1;
for j = 2:p+1
bc(j) = (1 - (1+alpha)/(j-1))*bc(j-1);
cc(j) = (1 - (1+beta)/(j-1))*cc(j-1);
end
s1 = 0;
s2 = 0;
for j = 2:p+1
s1 = s1 + bc(j)*x(p+2-j);
s2 = s2 + cc(j)*x(p+2-j);
end
x(i) = ( f(i) - m*dtau^(-alpha)*s1 - b*dtau^(-beta)*s2 )/...
( m*dtau^(-alpha)*bc(1) + b*dtau^(-beta)*cc(1) + k);
v(i) = ( x(i) - x(i-1) )/dtau;
end
end
天天Matlab代码科研顾问
- 粉丝: 3w+
- 资源: 2297
最新资源
- 根据网易云生成lrc,支持双语言.zip
- 实验箱介绍,具体的等我介绍就好,先看了解个大概
- 根据OC版本借贷类型APP、使用swift语言重写一套部分功能简易类型APP.zip
- 新能源汽车+电气规范和测试标准+B级电压系统和零部件+ISO 21498-2-2021
- 极简 go Language ctp 交易引擎.zip
- 本项目是用GO语言实现的网易云信的服务端API封装.zip
- 本项目是三大自然语言处理课程项目,基于seq2seq模型,实现简单的对话机器人效果 .zip
- C#毕业设计-基于ASP.NET的教师公寓管理系统源码.zip
- 本库将会整理我在学习go语言过程中在阅读好文,博客,开源项目代码时遇到的好的易于复用的并发模式代码.zip
- 完全原创,百分百能用 用于下载深度学习医学数据集MedShapeNet的数据集,不依赖openssl,如果你openssl下载不了可以用我这个
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈