大规模非线性动力系统的高效可识别性、可控性和可观测性检测研究(Matlab代码实现)
👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
本文对大规模非线性动力系统的高效可识别性、可控性和可观测性检测研究,并用Matlab代码实现之。详细文章讲解见参考文献。
📚2 运行结果
部分结果图
部分代码:
function [txxp,xxpt] = pxxssen(t,xt,uss,pe,fxup,dt,x0,ix0e,ad,xpi,xxi)
% pxxssen : Steady state sensitivity matrix for identifiability
%
% [txxp,xxpt] = pxxssen(t,xt,uss,pe,fxup,dt,x0,ix0e,ad)
%
% Inputs
% t : time t
% xt : system state response
% uss : steady input
% pe : estimated parameters
% fxup : function handle to system dynamics with pe as argument
% dt : time-step scaling and squaring
% x0 : initial state
% ix0e : indices to be estimated initial states <0 all 0 none
% ad : (optional) if nonzero automatic differentiation else finite differences
% default: automatic differentiation
% xpi : (optional) Initial values state sensitivity to parameters
% default zeros(nx,np)
% xxi : (optional) Initial values state sensitivity to parameters
% default eye(nx,nx)
%
% Outputs
% txxp : time axis state sensitivity matrix xxpt
% xxpt : state sensitivity matrix xxpt
%
% GvW 14-11-2018
%% Check inputs
if nargin<6; error(' To few inputs');
elseif nargin<8; ix0e=[]; x0=[]; ad=1;
elseif nargin<9; ad=1;
elseif nargin<10; xpi=[];
elseif nargin<11; xxi=[];
end % Default: automatic differentiation
th=t(1); xh=xt(1,:)'; % Extract initial time and system state
if size(uss,2)>1; uss=interp1(uss(:,1),uss(:,2:end),th)'; end
np=length(pe); % Number of estimated parameters
[nt,nx]=size(xt); % State dimension nx
if ~isempty(x0) && nx~=length(x0); error(' xt,x0 incompatible'); end
nu=length(uss);
%% Initialize sensitivity matrix
if isempty(xxi);
xxi=zeros(nx,length(ix0e)); for ih=ix0e; xxi(ih,ih)=1; end
end
if max(ix0e)<1;
xph=xpi; % Initial state sensitivity if x0 not estimated
else
xph=[xpi,xxi]; % Initial state sensitivity if x0 estimated
pe=[pe; x0(ix0e)];
end
txxp=th; %Initialize txxp
xxpt=[xh; xph(:)]'; % Initialize state sensitivity storage
% Empty pe if only x0 is identified
if np; peh=pe; else peh=[]; end;
%% Single df/dx, df/dp computation (because of steady state)
if ~nu
[dfdx]=vfdiff(@(t,xh)fxup(t,xh,peh),th,xh,ad);
if np; [dfdp]=vfdiff(@(t,peh)fxup(t,xh,peh),th,peh,ad);
else dfdp=[]; end
else
[dfdx]=vfdiff(@(t,xh)fxup(t,xh,uss,peh),th,xh,ad);
if np; [dfdp]=vfdiff(@(t,peh)fxup(t,xh,uss,peh),th,peh,ad);
else dfdp=[]; end
end
%% Computation phi(0,dt), gam(0,dt)
ns=ceil(abs((t(end)-t(1))/dt));
dt=(t(end)-t(1))/ns;
if dt>0; A=dfdx; else A=-dfdx'; end
if isempty(dfdp)
phi=expm(A*dt);
else
[phi,gam]=c2d(A,dfdp,dt);
end
%% Integration sensitivity matrix; xh unchanged steady state
for i1=1:ns
xph=phi*xph; if np; xph=xph+gam; end;
th=t(1)+i1*dt; txxp=[txxp;th]; xxpt=[xxpt; [xh;xph(:)]'];
end
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]L.G. Van Willigenburg, J.D. Stiger, J. Molenaar, 2022, "Sensitivity matrices as keys to local structural system properties of large-scale nonlinear system
🌈4 Matlab代码实现
相关文章
- 智能优化算法——蜜蜂优化算法(Matlab完整代码实现)
- 【机会约束】机会约束优化研究(Matlab代码实现)
- 短时内穿过矢量风场的路径规划研究(Matlab代码实现)
- 基于帝国主义竞争算法(ICA)求解旅行商问题(TSP)(Matlab代码实现)
- 基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)
- 基于遗传算法在机器人路径规划中的应用研究(Matlab代码实现)
- 基于CNN和FNN的进化神经元模型的快速响应尖峰神经网络(Matlab代码实现)
- 【Bi-LSTM】基于双向长短期记忆 (Bi-LSTM) 需求预测研究(Matlab代码实现)
- 基于 K 均值聚类的径向基RBF神经网络优化(Matlab代码实现)
- 【改进算法】【IHAOAVOA】天鹰优化算法和非洲秃鹫混合优化算法(Matlab代码实现)
- 【无人船】基于模型预测控制(MPC)对USV进行自主控制(Matlab代码实现)
- 基于鲸鱼优化算法的5G信道估计(Matlab代码实现)
- ECG信号处理——包括基本波检测、信号去噪、信号重建度量(Matlab代码实现)
- 改进遗传算法结合猫群优化算法(CSO)(Matlab完整代码实现)
- 灰狼算法和粒子群算法比较(附完整Matlab代码)——可应用于电气期刊论文
- 用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)
- 【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)
- 【灵敏性】用于二维和三维声学设计灵敏度分析的奇异边界法(Matlab代码实现)
- 【时空敏感性分析】肿瘤生长模型的时空敏感性研究(Matlab代码实现)
- 【信号处理】天线分集与空时编码技术——瑞利衰落信道下MRC性能(matlab代码实现)
- 基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)
- 【设备布局】基于粒子群优化算法的设备布局设计研究(Matlab代码实现)
- 用于大规模 MIMO 检测的近似消息传递 (AMP)(Matlab代码实现)
- 大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)