【问题标题】:How to search and replace in mathematica?如何在mathematica中进行搜索和替换?
【发布时间】:2013-06-09 22:26:32
【问题描述】:

我正在学习如何搜索多项式并替换包含在有限点列表 {P[a,b], P[c,d] 中的所有点 P[x,y]。 .., P[x,y]} 使用诸如 (q+ab) 之类的项,并将列表中未包含的所有点 P[a,b] 替换为不同的项 (w+cd),例如例子。

这是我一直在尝试的一些代码...

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] 是否在给定列表中,'pairs'

为了验证任何建议,输入

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

提前感谢您的帮助!

【问题讨论】:

    标签: wolfram-mathematica replaceall mathematical-expressions


    【解决方案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 *)
    

    【讨论】:

    • 太棒了!非常感谢,乔治。
    猜你喜欢
    • 2017-01-05
    • 2020-08-09
    • 2015-02-15
    • 1970-01-01
    • 2010-10-22
    • 2011-06-15
    • 2011-11-02
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多