Guy*_*Ari 9 wolfram-mathematica
我有一个Mathematica表达式,包含一个方形根,示意图
expr = a / (b + Sqrt[c]);
Run Code Online (Sandbox Code Playgroud)
其中a,b,c大表达式.我想在sqrt下提取表达式,例如通过匹配模式,例如
Match[expr,Sqrt[x_]] // should return c
Run Code Online (Sandbox Code Playgroud)
是否有捷径可寻?
Mr.*_*ard 12
从理论上讲,这应该正常工作:
extractSqrt = Cases[ToBoxes@#, SqrtBox@x_ :> ToExpression@x, Infinity] &;
extractSqrt[expr]
Run Code Online (Sandbox Code Playgroud)
如果您愿意将作业更改为expr,则可以执行以下操作:
expr = Hold[a / (b + Sqrt[c])];
Cases[expr, HoldPattern @ Sqrt[x_] :> x, Infinity]
Run Code Online (Sandbox Code Playgroud)
在Hold从施加任何的简化表达式在赋值语句中防止的Mathematica.在这种情况下,Sqrt[c]将"简化"变为Power[c,Rational[1,2]].
的HoldPattern是在必要的Cases表达,以防止相同的简化的发生到图案相匹配.