微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pydrake 中的符号化简化 最小示例:

如何解决pydrake 中的符号化简化 最小示例:

我正在处理一个system identification 类型)问题,其中我有一个非常复杂的符号表达式,我知道它在一组参数中是线性的。我想在此表达式上使用 DecomposeAffineExpressions,但由于分母中未取消的项,Drake 无法将该表达式识别为线性。我知道表达式确实是线性的,因为我可以转换为 sympy 并在那里进行简化(但如果可能,我宁愿避免这种转换)。

是否可以在 Drake 中执行这种简化(参见下面的最小示例)? seemssome support 用于更复杂的与 Trig 相关的简化,但我不清楚这如何适用于简单地取消分母中的冗余项。

最小示例:

实际发生了什么:

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) / ba 具有不同的评估输出。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。