我正在尝试在Mathematica中实现我自己的Coefficient
函数版本,用于学习目的。这是我到目前为止写的:
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];
]
我的问题是If[ MatchQ[#, a_ Power[var,pow] ], coeff=a]
没有返回a_
匹配MatchQ
内的匹配项,而是返回文字“a”。
我如何参考MatchQ匹配的内容?
答案 0 :(得分:0)
我找到解决此问题的方法是在If
语句中使用替换规则,如下所示:
Map[ If[ MatchQ[ #, a_. Power[var,pow] ], coeff = (# /. b_. Power[var,pow] -> b);] &, myexpr];
答案 1 :(得分:0)
一种做你想要的事情的方法是使用像
这样的东西If[ Length[matchedparts = Cases[ expr , pattern :> result]]>0 , use(matchedparts), do something else ]