如何在javascript中实现逆拉普拉斯变换?

时间:2014-08-19 08:35:19

标签: math javascript numerical-methods system-analysis

我正在编写一个javascript applet,让其他人可以轻松查看带有和不带比例控制器的系统如何工作以及输出是什么。

首先对applet进行一点解释(如果你愿意,你可以跳过这个,真正的问题在最后一段。):

  

我设法为系统实现了一种输入方式(在频域中),因此applet可以进行数学计算并向用户显示他们提供的系统。在小程序计算系统的极点和零点时,将它们与根轨迹一起绘制,绘制系统的奈奎斯特曲线并绘制系统的波特图。

     

我希望applet做的下一件事是计算和绘制脉冲响应。为此,我需要对系统的传递函数执行逆拉普拉斯变换。

现在真正的问题: 我在频域中有一个功能(传递函数)。该函数是一个有理函数,作为两个多项式存储在程序中(由它们的系数存储的分子和分母)。 将此功能转换为时域的最佳方法是什么? (逆拉普拉斯)。或者是否有一个开源库已经实现了这一点。我已经搜索了它,但只找到了一些数学库,用于更简单的数学。

提前致谢

2 个答案:

答案 0 :(得分:2)

这是一个相当复杂和有趣的问题。一些想法。

(1)如果解必须是严格的JS:一些有理函数的逆LT可以通过部分分数分解找到。你有多项式的数值系数,对吧?您可以尝试在JS中实现部分分数分解,也可以找到一个。这里的困难在于无法保证您可以通过部分分数找到逆LT。

(2)使用JS作为粘合代码并将有理函数发送到另一个进程(运行例如Sympy或Maxima)以计算逆LT。这样您就可以利用所有可用的功能,但是连接到其他进程并解析结果需要一些工作。至少对于Maxima,已经有很多项目使用Maxima作为计算后端;见:http://maxima.sourceforge.net/relatedprojects.html

答案 1 :(得分:2)

问题现在解决了。在检查了一些数值方法之后,我通过使用系统的极点和最小二乘法来计算系数来进行部分分数分解。在此之后,逆LT并不难找到。

感谢你的建议;)

问我是否要查看代码。