从大表达式中提取与模式匹配的表达式
我有一个包含单个平方根的 Mathematica 表达式,示意性地
expr = a / (b + Sqrt[c]);
其中 a
、b
、c
是大型表达式。我想提取 sqrt 下的表达式,例如通过匹配模式,例如
Match[expr,Sqrt[x_]] // should return c
是否有一种简单的方法可以做到这一点?
I have a Mathematica expression that contains a single square root, schematically
expr = a / (b + Sqrt[c]);
where a
,b
,c
are large expressions. I would like to extract the expression under the sqrt, for instance by matching to a pattern, something like
Match[expr,Sqrt[x_]] // should return c
Is there an easy way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
理论上,这应该可以正常工作:
Theoretically, this should work correctly:
如果您愿意将赋值更改为
expr
,可以执行以下操作:赋值语句中的
Hold
会阻止 Mathematica 对表达式应用任何简化。在本例中,Sqrt[c]
被“简化”为Power[c,Rational[1,2]]
。HoldPattern
在Cases
表达式中至关重要,可以防止匹配的模式发生同样的简化。If you are willing to change the assignment to
expr
, you can do this:The
Hold
in the assignment statement prevents Mathematica from applying any simplifications to the expression. In this case,Sqrt[c]
gets "simplified" intoPower[c,Rational[1,2]]
.The
HoldPattern
is essential in theCases
expression to prevent the same simplification from happening to the pattern being matched.我等待一些示例,但同时尝试一下:
Sqrt(x) 的标准内部形式是 Power[x, 1/2]。
I await a few examples, but in the meantime, try:
The standard internal form for Sqrt(x) is
Power[x, 1/2]
.