从大表达式中提取与模式匹配的表达式

问题描述

| 我有一个Mathematica表达式,其中包含一个平方根
expr = a / (b + Sqrt[c]);
a
b
c
是大表达式。我想在sqrt下提取表达式,例如通过匹配一个模式,例如
Match[expr,Sqrt[x_]] // should return c
是否有捷径可寻?     

解决方法

从理论上讲,这应该可以正常工作:
extractSqrt = Cases[ToBoxes@#,SqrtBox@x_ :> ToExpression@x,Infinity] &;

extractSqrt[expr]
    ,如果您愿意将分配更改为“ 6”,则可以执行以下操作:
expr = Hold[a / (b + Sqrt[c])];

Cases[expr,HoldPattern @ Sqrt[x_] :> x,Infinity]
赋值语句中的
Hold
阻止Mathematica对表达式应用任何简化形式。在这种情况下,“ 9”将“简化”变成“ 10”。 ѭ11在表达式ѭ12中是必不可少的,以防止对匹配的模式进行相同的简化。     ,我等待一些示例,但与此同时,请尝试:
Cases[expr,x_^(1/2 | -1/2) :> x,Infinity]
Sqrt(x)的标准内部格式为
Power[x,1/2]
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...