1

Coefficient出于学习目的,我正在尝试在 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] &, f[var]];

    Return[coeff];
]

我的问题是它If[ MatchQ[#, a_ Power[var,pow] ], coeff=a]不返回a_内部匹配的内容,MatchQ而是返回文字“a”。

如何参考 MatchQ 匹配的内容?

4

2 回答 2

0

我发现解决此问题的方法是在If语句中使用替换规则,如下所示:

Map[ If[ MatchQ[ #, a_. Power[var,pow] ], coeff = (# /. b_. Power[var,pow] -> b);] &, myexpr];
于 2013-04-28T10:49:30.877 回答
0

做你想做的事情的一种方法是使用类似的东西

If[ Length[matchedparts = Cases[ expr , pattern :> result]]>0 , use(matchedparts), do something else ]
于 2013-04-28T20:45:15.887 回答