Wolfram mathematica 从MatchQ中提取匹配对象
为了便于学习,我正在尝试在Mathematica中实现自己版本的Wolfram mathematica 从MatchQ中提取匹配对象,wolfram-mathematica,Wolfram Mathematica,为了便于学习,我正在尝试在Mathematica中实现自己版本的系数函数。这是我到目前为止写的: myCoefficient[fun_,var_,pow_] := Module[ {f,coeff}, f[var] = Expand[fun]; Map[ If[ MatchQ[#, a_ Power[var,pow] ], coeff=a] &, f[var]]; Map[ If[ MatchQ[#, Power[var,pow] ], coeff=1] &am
系数函数。这是我到目前为止写的:
myCoefficient[fun_,var_,pow_] := Module[ {f,coeff},
f[var] = Expand[fun];
Map[ If[ MatchQ[#, a_ Power[var,pow] ], coeff=a] &, f[var]];
Map[ If[ MatchQ[#, Power[var,pow] ], coeff=1] &, f[var]];
Return[coeff];
]
我的问题是如果[MatchQ[#,a_upower[var,pow]],coeff=a]
不返回a
内部匹配的MatchQ
,而是返回文本“a”
如何引用MatchQ匹配的内容?我发现解决此问题的方法是在If
语句中使用替换规则,如下所示:
Map[ If[ MatchQ[ #, a_. Power[var,pow] ], coeff = (# /. b_. Power[var,pow] -> b);] &, myexpr];
做你想做的事情的一种方法是使用
If[ Length[matchedparts = Cases[ expr , pattern :> result]]>0 , use(matchedparts), do something else ]
如果你正在学习Mathematica,我建议你不要选择这个网站,而是选择第二个动议。绝大多数数学家都搬到了那里。一对夫妇仍然经常出没,但他们非常罕见。谢谢你的建议