pydrake中的符号简化

用户名

我正在研究一个(系统标识类型)问题,其中我有一个非常复杂的符号表达式,我知道它在某些参数集中是线性的。我想DecomposeAffineExpressions在此表达式上使用,但由于分母中未取消的术语,因此Drake不能将表达式识别为线性。我知道表达式实际上是线性的,因为我可以转换为sympy并在那里进行简化(但是,如果可能的话,我宁愿避免这种转换)。

是否可以在Drake中执行这种简化(请参见下面的最小示例)?似乎一定的支持更复杂的触发相关的简化,但它不是我清楚这是怎么应用到简单地取消分母多余的条款。

最小示例:

实际发生的情况:

from pydrake.all import *

a = Variable('a')
b = Variable('b')

expr = (a*b)/b
print(expr)           # (a*b)/b
print(expr.Expand())  # (a*b)/b

我想做的是:

expr_simplified = expr.Simplify()  # (or something like this)
print(expr_simplified)             # a
孔顺浩

目前我们在Drake中没有这种简化。原因之一是它没有声音。例如,当b = 0,(a * b) / b并且a具有不同的评价输出。

话虽如此,我们了解到此功能很有用(例如,基于b≠0的假设)。我将开始在C ++中实现此功能,并使其在Python端可用。请订阅问题https://github.com/RobotLocomotion/drake/issues/8515以获取有关此主题的更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章