隐式状态变量
这类变量具有显式状态变量和约束变量(将在下一节描述)的复合属性。其典型特征如下:
-
积分器会向子模型提供状态变量及其导数的估计值。子模型使用这些值计算残差,积分器随后尝试使残差归零。
-
残差的单位可以与隐式状态变量的单位无关。
隐式状态通过初始值和一个与子模型代码中残差相关联的导数隐式表达式定义。以下给出此类表达式的示例:

该表达式用于在子模型代码中定义残差:

为强调区别,我们举第二个例子。假设质量为M kg的物体在f1 N和f2 N两力作用下作一维运动,其速度为v1 m/s。若使用显式状态,代码可表示为:
/* >>>>>>>>>>>>计算函数可执行语句 */
*v1dot = (*f2 - *f1)/M;
/* <<<<<<<<<<<<计算可执行语句结束 */
这里我们明确定义了v1的导数v1dot。而使用隐式状态时,对应的C代码为:
/* >>>>>>>>>>>>计算函数可执行语句 */
/* 输入时_v1dot是v1的导数 */
*v1dot = M*(*v1dot) - (*f2 - *f1);
/* 输出时v1dot是v1的残差 */
/* <<<<<<<<<<<<计算可执行语句结束 */
关键在于同一变量v1dot被同时用作导数和残量。输入时v1dot是积分器提供的v1导数估计值(单位m/s²),输出时变为残差(单位N)。显然第一种方案更优。第二种方案唯一优势是能容忍M=0的情况。
仅在充分理由下才使用隐式状态。
译文质量与官方无关,仅做辅助学习使用,帮助大家更方便高效的掌握工具.文档网址:www.tech-doc.cn;公众号:Amesim学习与应用、译匠工厂