擅长:python、mysql、java
<p>延迟并不完全是线性函数。通常的阶跃延迟在Laplace域中表示为<code>e**(a*s)/s</code>,其中{<cd2>}是延迟。在</p>
<p>这意味着“正常”的ODE解算器将无法工作,除非您有一些变通方法。通常这种解决方法不是很容易做到的,因为对于刚性问题,通常不能用足够好的近似值进行插值。在</p>
<p>无论如何,其中一个解决方案是使用其他答案中发布的库。在</p>
<p>另一个解决方案是对称地进行(如果可以,可以尝试<a href="http://sympy.org/" rel="nofollow">SymPy</a>)。在</p>
<p>第三种解决方案是存储过去的结果,然后进行插值以找到您需要的确切的过去(可能不够好)。在</p>
<p>第四种解决方案可能是一些模拟器文档推荐的解决方案:使用<code>c2d()</code>并在离散时间内模拟整个模型,并将过去的变量存储在一个列表/数组中(没有插值,但您可能需要使用一些小步骤以获得更好的精度)。在</p>
<p>第五个解决方案是使用<a href="https://en.wikipedia.org/wiki/Pad%C3%A9_approximant" rel="nofollow">Padé approximation</a>来表示模型的延迟(根据具体情况可能会起作用)。python控件中有一个<a href="http://python-control.sourceforge.net/manual/matlab_strings.html#delay.pade" rel="nofollow">^{<cd4>} function</a>来近似于此。在</p>