我正在研究如何搜索多项式并替换有限点列表中包含的所有点P [x,y] {P [a,b],P [c,d] ,. ..,P [x,y]},其项有(q + ab),并用不同的术语(w + cd)替换列表中未包含的所有点P [a,b],例。
以下是我一直在尝试的一些代码......
K[poly_, pairs_] :=
poly //. IF[MemberQ[pairs, P[a_, b_]], P[a_, b_] :> (q+xy),
P[a_, b_] :> (w+cd)]
其中//。是通过所有对替换,IF有条件地用适当的术语替换对,而MemberQ检查对P [a,b]是否在给定列表中,'对'
验证任何建议,输入
K[ -q P[1,3] P[4,6] , {P[1,3], P[2,7]}]
应输出
-ab cd q - cd q^2 - ab q w - q^2 w
提前感谢您的帮助!
答案 0 :(得分:1)
尝试这样的事情
K[poly_, pairs_] := poly /. ( #-> q+ab & /@ pairs ) /. P[__,__]-> w + cd
或者,更接近你的方法:
K[poly_, pairs_] := poly /. P[a_,b_] :> If[MemberQ[pairs,P[a,b]], q+ab, w +cd ]
请注意,您需要展开才能获得所需的表单..
Expand[K[-q P[1, 3] P[4, 6], {P[1, 3], P[2, 7]}]]
(* -ab cd q - cd q^2 - ab q w - q^2 w *)