関数の f[{x, y}]+g[{z, w}] という式があったときに,これらの式の f や g の中に入っているリスト(今の場合は,{x, y}や{z, w})の先頭に,a を付け加えて, f[{a, x, y}]+g[{a, z, w}] のようにしたいと考えています.
(すなわち,f[{x, y}]+g[{z, w}]を f[{a, x, y}]+g[{a, z, w}]に変えたり,また他の例としては,f[{x, y}]+g[{z, w}]+h[{c, d}]を f[{a, x, y}]+g[{a, z, w}]+h[{a, c, d}]に変えたりしたい.)

このとき,例えばPretendを使うと,
Prepend[f[3, 1], 2]
によって,f[2, 3, 1]が得られることなどは知っていますが,上記のようなものに対して,どのようにすればよいのかが,わかりません.

もしもご存じの方がおられれば,お教え頂けないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

パターンマッチングを使うのがMathematica的です。



f[{x, y}] + g[{z, w}] /. {s_Symbol[{args__}] -> s[{a, args}]}
    • good
    • 0
この回答へのお礼

お教えいただき、すごく有り難く感じています。
自分では、すぐにこのような文章が書けないので、非常に勉強になりました。

本当に有り難うございました。

お礼日時:2016/11/24 09:35

(* 「後ろから 挿入を」と 所望されたなら ↓ 自在*)



6*f[x, y] + 9*g[z, w] + 19*h[c, d] + 1122*i[X, Y];
6*Append[%[[1, 2]], A] + 9*Append[%[[2, 2]], A] +
19*Append[%[[3, 2]], A] + 1122*Append[%[[4, 2]], A]

(*その顛末;6 f[x, y, A] + 9 g[z, w, A] + 19 h[c, d, A] + 1122 i[X, Y, A]*)
    • good
    • 0
この回答へのお礼

何度もお教えいただき、有り難うございます。
勉強になります。

お礼日時:2016/11/24 09:34

f[x, y] + g[z, w] + h[c, d];


L = Length[%]
Sum[Prepend[%%[[k]], a], {k, 1, L}]
(*-----------------------------------*)

f[x, y] + g[z, w];
L = Length[%]
Sum[Prepend[%%[[k]], a], {k, 1, L}]
(*----------------------------------*)
6*f[x, y] + 9*g[z, w] + 19*h[c, d] + 1122*i[X, Y]
6*Prepend[%[[1, 2]], a] + 9*Prepend[%[[2, 2]], a] +
19*Prepend[%[[3, 2]], a] + 1122*Prepend[%[[4, 2]], a]
(*---------------------------------------------------*)

(* 69 で 19. 1122.... [[11 月22日の 「1122」 が 「いい夫婦」]] *)
    • good
    • 0
この回答へのお礼

%%という使い方があるのですね!
また[[2,1]]のような使い方があることも初めて知りました。
(その他(^^)も含めてありがとうございました。)

いろいろと勉強になりました。
ありがとうございました。

お礼日時:2016/11/23 08:48

f[x, y] + g[z, w] + h[c, d]


Prepend[%[[1]], a] + Prepend[%[[2]], a] + Prepend[%[[3]], a]
    • good
    • 0
この回答へのお礼

お教え頂き,有り難うございます.
上記のような使い方がわかって,とても勉強になりました.

しかしながら,実は問題はまだ解決しておらず,実際,以下の3点がわかっていません.
① f[x, y] + g[z, w] + h[c, d] の和をとっているものたちの項数が一定でない場合(すなわち, f[x, y] + g[z, w] (2項)のときなど)に,一律に、先頭に a を付け加えるにはどうすればよいか?(すなわち, f[x, y] + g[z, w] + h[c, d] の長さが"3"であることを得るにはどうすればよいか?)
② f[{x, y}] + g[{z, w}] の先頭に a を付け加えて, f[{a, x, y}]+g[{a, z, w}] のようにするにはどうすればよいか?(すなわち,f の中のリストの中の先頭に a を付け加えたい.レベルの指定をどうするか?)
③ ②と関連するかもしれませんが,2*f[{x, y}] +3* g[{z, w}] + h[{c, d}] のようなものたち(線形和)で同じようにしたいがどうすればよいか?

もしも可能であれば,追加でお教え頂けないでしょうか?

お礼日時:2016/11/23 06:36

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


人気Q&Aランキング