主要内容gydF4y2Ba

估计系数常微分方程适合给定的解决方案gydF4y2Ba

这个例子展示了如何使用线性和非线性模型参数估计的方框建模。gydF4y2Ba

用方框标识的估计系数常微分方程描述模型的动态适应给定的响应轨迹。gydF4y2Ba

  • 线性动力学,代表模型使用一个线性灰色矩形模型(gydF4y2BaidgreygydF4y2Ba)。估计模型系数使用gydF4y2Ba感动的gydF4y2Ba。gydF4y2Ba

  • 对于非线性动力学,代表模型使用非线性灰色矩形模型(gydF4y2BaidnlgreygydF4y2Ba)。估计模型系数使用gydF4y2BanlgreyestgydF4y2Ba。gydF4y2Ba

在本例中,您估计单摆的摩擦系数的值用其振动数据。单摆的运动方程是:gydF4y2Ba

$ $ m l ^ {2} \ ddot \θ点+ b \ \θ+ mglsin \θ= 0 $ $gydF4y2Ba

${\θ}$gydF4y2Ba是钟摆的角位移相对于其休息的状态。gydF4y2BaggydF4y2Ba重力加速度是恒定的。gydF4y2Ba米gydF4y2Ba是摆的质量gydF4y2BalgydF4y2Ba是摆的长度。gydF4y2BabgydF4y2Ba是粘滞摩擦系数,其价值估计适合给定的角位移数据。没有外部驱动力,从而加剧了钟摆的运动。gydF4y2Ba

负载测试数据。gydF4y2Ba

负载(fullfile (matlabrootgydF4y2Ba“工具箱”gydF4y2Ba,gydF4y2Ba“识别”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“iddemos”gydF4y2Ba,gydF4y2Ba“数据”gydF4y2Ba,gydF4y2Ba“pendulumdata”gydF4y2Ba));data = iddata (y, [], 0.1,gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“摆”gydF4y2Ba);数据。OutputName =gydF4y2Ba“摆的位置”gydF4y2Ba;数据。OutputUnit =gydF4y2Barad的gydF4y2Ba;数据。Tstart = 0; data.TimeUnit =“年代”gydF4y2Ba;gydF4y2Ba

测量角位移数据加载和保存为gydF4y2Ba数据gydF4y2Ba,一个gydF4y2BaiddatagydF4y2Ba对象与一个示例以0.1秒的成绩。的gydF4y2Ba集gydF4y2Ba命令用于指定数据输出属性,如名称、输出单元和时间的开始时间和单位向量。gydF4y2Ba

执行线性灰色矩形估计。gydF4y2Ba

假设钟摆经历只有小角度位移,描述摆运动的方程可以简化:gydF4y2Ba

$ $ m l ^ {2} \ ddot \θ点+ b \ \θ+球型\θ= 0 $ $gydF4y2Ba

使用角位移(gydF4y2Ba\θ美元gydF4y2Ba)和角速度(gydF4y2Ba点\ \θ美元gydF4y2Ba)作为状态变量,简化方程可以改写形式:gydF4y2Ba

数组$ $ \开始{}{1}& # xA; \ mathop ^ {X (t)} \限制。布鲁里溃疡= AX (t) + (t) \ \ & # xA; y (t) =残雪(t) + Du (t) & # xA; \{数组}$ $gydF4y2Ba

在这里,gydF4y2Ba

数组$ $ \开始{}{1}& # xA;左X (t) = \[{\开始数组{}{* {20}{c}} & # xA; \θ\ \ & # xA;{\点\θ}& # xA;结束\{数组}}\右]\ \ & # xA;左= \[{\开始数组{}{* {20}{c}} & # xA; 0 & # 38; 1 \ \ & # xA;{\压裂{{- g}} {l}}和{\压裂{{- b}} {{m {l ^ 2}}}} & # xA;结束\{数组}}\右]\ \ & # xA; b = 0 \ \ & # xA;左c = \[{\开始数组{}{* {20}{c}} & # xA; 1 & # 38; 0 & # xA;结束\{数组}}\右]\ \ & # xA; D = 0 & # xA; \{数组}$ $gydF4y2Ba

的gydF4y2BaBgydF4y2Ba和gydF4y2BaDgydF4y2Ba矩阵为零,因为没有外部驱动力单摆。gydF4y2Ba

1。创建一个ODE文件相关的模型系数的状态空间表示。gydF4y2Ba

函数gydF4y2Ba[A, B, C, D] = LinearPendulum (m, g, l, B, Ts) = [0 1;- g / l - b / m / l ^ 2);B = 0 (2,0);C = 0 [1];D = 0 (1,0);gydF4y2Ba结束gydF4y2Ba

这个函数,gydF4y2BaLinearPendulumgydF4y2Ba返回的状态空间表示线性运动的单摆模型使用模型系数gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba,gydF4y2BabgydF4y2Ba。gydF4y2BaTsgydF4y2Ba样品时间。保存这个函数gydF4y2BaLinearPendulum.mgydF4y2Ba。这个函数gydF4y2BaLinearPendulumgydF4y2Ba必须在MATLAB®路径。或者,您可以为该函数指定完整的路径名。gydF4y2Ba

2。创建一个线性灰色矩形模型相关gydF4y2BaLinearPendulumgydF4y2Ba函数。gydF4y2Ba

m = 1;g = 9.81;l = 1;b = 0.2;linear_model = idgrey (gydF4y2Ba“LinearPendulum”gydF4y2Ba,{m g, l b},gydF4y2Ba“c”gydF4y2Ba);gydF4y2Ba

米gydF4y2Ba,gydF4y2BaggydF4y2Ba而且,gydF4y2BalgydF4y2Ba指定的值已知的模型系数。gydF4y2BabgydF4y2Ba指定的初始猜测粘滞摩擦系数。的gydF4y2Ba“c”gydF4y2Ba输入参数调用gydF4y2BaidgreygydF4y2Ba指定gydF4y2Balinear_modelgydF4y2Ba作为一个连续时间系统。gydF4y2Ba

3所示。指定gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba作为已知参数。gydF4y2Ba

linear_model.Structure.Parameters (1)。自由= false;linear_model.Structure.Parameters (2)。自由= false;linear_model.Structure.Parameters (3)。自由= false;gydF4y2Ba

定义在前面的步骤中,gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba的前三个参数吗gydF4y2Balinear_modelgydF4y2Ba。使用gydF4y2BaStructure.Parameters.FreegydF4y2Ba字段的每个参数,gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba被指定为固定值。gydF4y2Ba

4所示。创建一个估计的选择设置,指定初始状态估计,估计进度显示。也迫使估计算法返回一个稳定的模式。这个选项是可用的线性模型(idgrey)估计。gydF4y2Ba

选择= greyestOptions (gydF4y2Ba“InitialState”gydF4y2Ba,gydF4y2Ba“估计”gydF4y2Ba,gydF4y2Ba“显示”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);opt.EnforceStability = true;gydF4y2Ba

5。估计粘滞摩擦系数。gydF4y2Ba

linear_model =老龄化最严重的(数据、linear_model选择);gydF4y2Ba

的gydF4y2Ba感动的gydF4y2Ba命令的参数更新gydF4y2Balinear_modelgydF4y2Ba。gydF4y2Ba

b_est = linear_model.Structure.Parameters (4) value;[linear_b_est, dlinear_b_est] = getpvec (linear_model,gydF4y2Ba“免费”gydF4y2Ba)gydF4y2Ba
linear_b_est dlinear_b_est = 0.0088 = 0.1178gydF4y2Ba

getpvecgydF4y2Ba回报,gydF4y2Badlinear_b_estgydF4y2Ba1,标准偏差与不确定性gydF4y2BabgydF4y2Ba,免费评估参数gydF4y2Balinear_modelgydF4y2Ba,估计的价值gydF4y2BabgydF4y2Ba粘滞摩擦系数,使用线性灰色矩形估计是中返回gydF4y2Balinear_b_estgydF4y2Ba。gydF4y2Ba

6。比较的响应线性灰色矩形模型测量数据。gydF4y2Ba

linear_model对比(数据)gydF4y2Ba

线性灰色矩形估计模型提供了一个适合测量数据的49.9%。穷人健康是由于假设钟摆经历小角度位移,而测量数据显示大的振荡。gydF4y2Ba

执行非线性灰色矩形估计。gydF4y2Ba

非线性灰色矩形估计需要你表达一阶的微分方程作为一组方程。gydF4y2Ba

使用角位移(gydF4y2Ba\θ美元gydF4y2Ba)和角速度(gydF4y2Ba点\ \θ美元gydF4y2Ba)作为状态变量,运动方程可以改写为一组一阶非线性微分方程:gydF4y2Ba

数组$ $ \开始{}{1}& # xA; {x_1} (t) = \θ(t) \ \ & # xA; {x_2} (t) = \点\θ(t) \ \ & # xA; {{x} \点_1}(t) = {x_2} (t) \ \ & # xA; {{x} \点_2}(t) = \压裂罪{{- g}} {1} ({x_1} (t)) - \压裂{b} {{m {l ^ 2}}} {x_2} (t) \ \ & # xA; y (t) = {x_1} (t) & # xA; \{数组}$ $gydF4y2Ba

1。创建一个ODE文件相关的模型系数的非线性表示。gydF4y2Ba

函数gydF4y2Ba(dx, y) = NonlinearPendulum (t, x, u, m, g, l, b,变长度输入宗量)gydF4y2Ba%输出方程。gydF4y2Bay = x (1);gydF4y2Ba%角位置。gydF4y2Ba%状态方程。gydF4y2Badx = [x (2);gydF4y2Ba…gydF4y2Ba%角位置gydF4y2Ba- (g / l) * sin (x (1)) - b / (m * l ^ 2) * x (2)gydF4y2Ba…gydF4y2Ba%角速度gydF4y2Ba];gydF4y2Ba结束gydF4y2Ba

这个函数,gydF4y2BaNonlinearPendulumgydF4y2Ba,回报国家衍生品和输出的非线性运动模型摆使用模型系数gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba,gydF4y2BabgydF4y2Ba。保存这个函数gydF4y2BaNonlinearPendulum.mgydF4y2Ba在MATLAB®路径。或者,您可以为该函数指定完整的路径名。gydF4y2Ba

2。创建一个非线性灰色矩形模型相关gydF4y2BaNonlinearPendulumgydF4y2Ba函数。gydF4y2Ba

m = 1;g = 9.81;l = 1;b = 0.2;订单= [1 0 2];参数= {m g, l b};initial_states = [1;0);t = 0;nonlinear_model = idnlgrey (gydF4y2Ba“NonlinearPendulum”gydF4y2Ba、秩序、参数、initial_states Ts);gydF4y2Ba

3所示。指定gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba作为已知参数。gydF4y2Ba

setpar (nonlinear_modelgydF4y2Ba“固定”gydF4y2Ba{真的真的真的假});gydF4y2Ba

定义在前面的步骤中,gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba的前三个参数吗gydF4y2Banonlinear_modelgydF4y2Ba。使用gydF4y2BasetpargydF4y2Ba命令,gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba被指定为固定值吗gydF4y2BabgydF4y2Ba被指定为一个免费的估计参数。gydF4y2Ba

4所示。估计粘滞摩擦系数。gydF4y2Ba

nonlinear_model = nlgreyest(数据、nonlinear_modelgydF4y2Ba“显示”gydF4y2Ba,gydF4y2Ba“全部”gydF4y2Ba);gydF4y2Ba

的gydF4y2BanlgreyestgydF4y2Ba命令的参数更新gydF4y2Banonlinear_modelgydF4y2Ba。gydF4y2Ba

b_est = nonlinear_model.Parameters (4) value;[nonlinear_b_est, dnonlinear_b_est] = getpvec (nonlinear_model,gydF4y2Ba“免费”gydF4y2Ba)gydF4y2Ba
nonlinear_b_est dnonlinear_b_est = 0.0149 = 0.1002gydF4y2Ba

getpvecgydF4y2Ba返回,gydF4y2Badnonlinear_b_estgydF4y2Ba1,标准偏差与不确定性gydF4y2BabgydF4y2Ba,免费评估参数gydF4y2Banonlinear_modelgydF4y2Ba,估计的价值gydF4y2BabgydF4y2Ba粘滞摩擦系数,使用非线性灰色矩形估计是中返回gydF4y2Banonlinear_b_estgydF4y2Ba。gydF4y2Ba

5。比较的响应线性和非线性灰色矩形模型测量数据。gydF4y2Ba

比较(数据、linear_model nonlinear_model)gydF4y2Ba

非线性灰色矩形模型估计提供了一种更加适合测量数据。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

相关的话题gydF4y2Ba