2

다항식을 통해 검색하고 유한 점 {P [a, b], P [c, d], ..의 목록 내에 포함 된 모든 점 P [x, y]를 바꾸는 방법을 배우려합니다. 예를 들어, (q + ab)와 같은 용어로리스트에 포함되지 않은 모든 포인트 P [a, b]를 다른 용어로 대체한다 . mathematica에서 검색하고 바꾸는 방법은 무엇입니까?

은 여기에 ... 내가하려고했는데 몇 가지 코드의

K[poly_, pairs_] := poly //. IF[MemberQ[pairs, P[a_, b_]], P[a_, b_] :> (q+xy), P[a_, b_] :> (w+cd)]

//. 적절한 조건으로 쌍을 대체하기위한 조건부 IF와 쌍 P [a, b]가 주어진 목록 '쌍'내에 있는지를 확인하기위한 MemberQ

제안 사항을 확인하려면 입력

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 

는 사전에 어떤 도움을 주셔서 감사합니다!

답변

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 *) 
+0

좋아! 고마워요, 조지 – user2469184