该元件有两个子模型,分别是DIF00和DIF1两个子模型。其中DIF00是用隐式变量产生一个信号输出,输出是输入的导数,而DIF1是产生一个输出信号,其输出信号是使用一个时间常数。
DIF00的特点是在工作时能够非常精确。然而,它并不完全可靠,在某些情况下他会微分失败,在它失败的情况下,这时用DIF1替换它,不太准确但更可靠。
由于x是隐式变量,因此必须设置其残差res(x)。在进入子模型时,隐式变量的残差被设置为隐式变量导数的估计值。输出信号可以直接设置为:output = der(x),而残差为res(x) = x - input,因此微分代数积分器试图使x等于输入,输出将是对输入导数的估计。在积分的开始和每次不连续之后,计算导数时可能会有一些精度的损失。这时就有了一个任务:x =input,这是一种预防措施,以防止在输入发生步骤更改时出现问题。
这里f(x)=x^2+2x+1,其关于f(x)的导数为y=2*x+2,下面是仿真结果:当x=5时,f(x)=36,导数为12.
DIF1特点是可靠但不是很准确。如果时间常数高,则精度低。随着时间常数的降低,精度增加,直到达到精度下降的点。如果要求高精度,DIF00可能更令人满意。
该子模型有三个输出,分别是dummy state variable(隐含状态变量)、initial value(初始值)、time constant for first order lag(一阶滞后的时间常数)。在参数设置的时候时间常数必须严格为正,虚拟状态变量的初值可以由用户设置,也可以直接用运行开始时输入的值设置。当用户不知道输入的初始值并且不想产生巨大的瞬态时,可以使用自动模式。
输出和虚状态函数的导数设为:output=(input-dummy state variable)/time constant for first order lag,这里dummy state variable的值越小则精度越高。