2013-04-27 79 views
1

我試圖在Mathematica中實現我自己的Coefficient函數版本,用於學習目的。這是我寫到目前爲止:從MatchQ提取匹配對象

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匹配的內容?

+2

如果你正在學習Mathematica,我會建議http://mathematica.stackexchange.com而不是這個網站 – 2013-04-27 18:37:26

+1

我第二個議案。絕大多數的數學家專家搬到那裏。一對夫婦仍然困擾着stackoverflow,但他們非常罕見。 – rcollyer 2013-04-28 03:27:27

+0

感謝您的建議 – blue 2013-04-28 10:46:56

回答

0

我找到解決這個問題的方法是使用一個替代規則If語句中,就像這樣:

Map[ If[ MatchQ[ #, a_. Power[var,pow] ], coeff = (# /. b_. Power[var,pow] -> b);] &, myexpr]; 
0

辦法做到那種你想要的東西是使用類似

If[ Length[matchedparts = Cases[ expr , pattern :> result]]>0 , use(matchedparts), do something else ]