関数の 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と関連する良く見られている質問

QMathematica f[{x, y}]を f[{x+1, y}]に変えたい

関数の f[{x, y}]+g[{z, w}]-h[{a, b, c}] という式があったときに,これらの式の f や g や h の中に入っているリスト(今の場合は,{x, y}や{z, w}や{a, b,c})の先頭の要素に,+1をして, f[{x+1, y}]+g[{z+1, w}]-h[{a+1, b, c}] のようにしたいと考えています.
極力簡明な方法であれば有り難いと考えていますが,例えばどのような方法がありますでしょうか?お教え頂ければ大変有り難く存じます.

(追記)
以前大変親切な方に,「関数の 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}] /. {s_Symbol[{args__}] -> s[{a, args}]}のように記述すれば良い旨を教えて頂きました.」
今回も上記の式の類似式をいろいろと作ってみましたが,なかなか上手くいきません.
例えば,f[{2, 3}] + g[{4, 1}] - h[{2, 2, 1}] /. {s_Symbol[{args__}] -> s[Prepend[{args}, 1]]}は上手くいきますが,PrependのところをDelete(と,1])にしてみると上手くいきません.

関数の f[{x, y}]+g[{z, w}]-h[{a, b, c}] という式があったときに,これらの式の f や g や h の中に入っているリスト(今の場合は,{x, y}や{z, w}や{a, b,c})の先頭の要素に,+1をして, f[{x+1, y}]+g[{z+1, w}]-h[{a+1, b, c}] のようにしたいと考えています.
極力簡明な方法であれば有り難いと考えていますが,例えばどのような方法がありますでしょうか?お教え頂ければ大変有り難く存じます.

(追記)
以前大変親切な方に,「関数の f[{x, y}]+g[{z, w}] という式があったときに,これらの式...続きを読む

Aベストアンサー

以下のようにすれば良いでしょう。

f[{x, y}] + g[{z, w}] - h[{a, b, c}] /. {s_Symbol[{a1_, a2___}] -> s[a1 + 1, a2]}

Qexp{L[1]x+L[2]x^2/2+L[3]x^3/3+…}=F[1]+F[2]x+F[3]x^2+…

フィボナッチ数列F[n]は、
F[1]=1,F[2]=1,F[n+2]=F[n+1]+F[n]
で定義され、リュカ数列L[n]は、
L[1]=1,L[2]=3,L[n+2]=L[n+1]+L[n]
で定義されます。このとき、

exp{L[1]x+L[2]x^2/2+L[3]x^3/3+…}=F[1]+F[2]x+F[3]x^2+…

が成り立つそうなのですが、どうしてなのですか?

右辺は、フィボナッチ数列の母関数と似ていてなんとか求められるのですが、左辺をどうして求めていいかわかりません。

なお、式は
http://mathworld.wolfram.com/FibonacciNumber.html
の(68)を参照しました。

Aベストアンサー

↓ここに証明がありますね。
http://maths.dur.ac.uk/~dma0rcj/PED/fib.pdf
(2.7 A surprising sum を見てください。)

参考URL:http://maths.dur.ac.uk/~dma0rcj/PED/fib.pdf

Qx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底,{y1,y2,y3}がその双対基底でx=(0,1,0)の時,y1(x),y

[問] ベクトルx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底とする。
{y1,y2,y3}がその双対基底でx=(0,1,0)の時、
y1(x),y2(x),y3(x)を求めよ。

という問題の解き方をお教え下さい。

双対基底とは
{f;fはF線形空間VからFへの線形写像}
という集合(これをV*と置く)において、
V(dimV=nとする)の一組基底を{v1,v2,…,vn}とすると
fi(vj)=δij(:クロネッカーのデルタ)で定めるV*の部分集合
{f1,f2,…,fn}はV*の基底となる。これを{v1,v2,…,vn}の双対基底と呼ぶ。

まず、
C^3の次元は6(C^3の基底は(1,0,0),(0,1,0),(0,0,1),(i,0,0),(0,i,0),(0,0,i))
だと思うので上記のx1,x2,x3は基底として不足してると思うのです(もう3ベクトル必要?)。

うーん、どのようにしたらいいのでしょうか?

Aベストアンサー

>C^3の次元は6(

これが間違え.
「x1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底」
といってるんだから,係数体はRではなく,C.

あとは定義にしたがって,
dualな基底を書き下せばいいだけ.
y1(x1)=1,y1(x2)=y1(x3)=0であって
v=ax1+bx2+cx2と表わせるわけだし,
v=(v1,v2,v3)とすれば,a,b,cはv1,v2,v3で表現できる
#単なる基底変換の問題.

Aベストアンサー

>所で、今回の問題は
「また、この線形方程式についての結果は何を物語っているか?」
とも問われているのですが
その答えは「∩[i=1,..,m]Ker(yi)の補集合の直交補空間の元を表している」と答えれば正解でしょうか?

●「この線型方程式」とあるが、どこに線型方程式があるのか僕には分かりません。

●意味・意義の解釈は種々にできます。これこそ自分の頭で考えるべきことでしょう。

●あなた自身が指摘してくれた通り、Vはもともと内積は定義されてないのですから、直交補空間をもちだすのは不適切です。内積を用いない解釈を、まずは求められていると思います。
もしも「直交補空間」という概念を用いるなら、どういう内積を入れるのか、書かねばなりません。(僕が「修正」でそうしたように)

●しかしどんな内積を入れたとしても、「「∩[i=1,..,m]Ker(yi)の補集合の直交補空間」は、yiがすべてゼロ写像ならば、V。そうでなければ、{0}になります。(よく考えて見ましょう)

●僕ならば、「この結果は、残念ながら言葉を話せないので、何も物語ることができない」と答えます。
ほとんど自明な結果であり、大した意味があるとは思えませんので、皮肉として。

以上。あまり人にばかり聞かず、自分でよく勉強することを勧めます。
おそらく同じ学校のメンバーがよく問題を丸投げしているので、しばらく答えるのは控えようと思います。

>所で、今回の問題は
「また、この線形方程式についての結果は何を物語っているか?」
とも問われているのですが
その答えは「∩[i=1,..,m]Ker(yi)の補集合の直交補空間の元を表している」と答えれば正解でしょうか?

●「この線型方程式」とあるが、どこに線型方程式があるのか僕には分かりません。

●意味・意義の解釈は種々にできます。これこそ自分の頭で考えるべきことでしょう。

●あなた自身が指摘してくれた通り、Vはもともと内積は定義されてないのですから、直交補空間をもちだすのは不適切です...
続きを読む

QA={Φ,{{a,b},{a,c}}} B={Φ,{a,b},{a,c

A={Φ,{{a,b},{a,c}}} B={Φ,{a,b},{a,c}}のとき、A∩Bは{Φ}なのかそれとも{a,b}などを含むのかどうかがわかりません。 わかる人がいらっしゃるなら教えてください。お願いします。

Aベストアンサー

落ち着いて考えれば分かるはず。
ただ、若干の慣れは必要かも・・・。

・考え方
Aの元は、Φと{{a,b},{a,c}}}の2個。
Bの元は、Φと{a,b}と{a,c}の3個。
共通するのは、Φだけ。

よって、A∩Bの元はΦだけ。
つまり、A∩B={Φ}。


人気Q&Aランキング

おすすめ情報