重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Plus[NonCommutativeMultiply[x,x,y],NonCommutativeMultiply[x,y,x],NonCommutativeMultiply[x,y,y]]
という式について質問します.

Fullformで表したときに,上記のような形で表される式があり,それらの項の(一番深い階層の)それぞれの先頭の文字を削除し
Plus[NonCommutativeMultiply[x,y],NonCommutativeMultiply[y,x],NonCommutativeMultiply[y,y]]
のような形で表したいと考えています.
普通にDeleteの命令を使うと,一番先頭にある「 NonCommutativeMultiply[x,x,y] 」が消えてしまい上手くいきません.どのようにするのがよいでしょうか??

A 回答 (1件)

式の1番深いレベルの先頭の引数を削除する、というのをそのまま解釈すると、


Map[Rest, Plus[NonCommutativeMultiply[x, x, y], NonCommutativeMultiply[x, y, x], NonCommutativeMultiply[x, y, y]], {-2}]
とするのが良いと思います。
式の一番深い方から2番目に、先頭要素を削除するRest関数を作用させる、という意味です。

NonCommutativeMultiplyの先頭だけに限定するのであれば、
Plus[NonCommutativeMultiply[x, x, y], NonCommutativeMultiply[x, y, x], NonCommutativeMultiply[x, y, y]]
/. NonCommutativeMultiply[_, a__] -> NonCommutativeMultiply[a]
という書き方もMathematica的ですね。
    • good
    • 1
この回答へのお礼

非常に詳しく教えて頂き、大変勉強になりました。
本当に有り難うございました。

お礼日時:2015/12/08 07:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!