Re: [心得] 小練功 - list與多項式與MapThread
看板Mathematica作者chungyuandye (養花種魚數月亮賞星星)時間13年前 (2012/01/30 09:06)推噓1(1推 0噓 1→)留言2則, 1人參與討論串2/2 (看更多)
※ 引述《jurian0101 (Hysterisis)》之銘言:
: 本小練習最早的目標是要獲得 f(n) = Σijk (0<i<j<k≦n) 的公式
: (但因為太簡單了故有後話
: btw, f(n)= n^2 (n-1)^2 (n-2) (n-3) /48)
答案應該算錯了,這邊可以用Sum來計算就好
有等號,0<i<j<k≦n
Sum[i*j*k, {k, 1, n}, {j, 1, k}, {i, 1, j}]
無等號,0<i<j<k<n
Sum[i*j*k, {k, 1, n - 1}, {j, 1, k - 1}, {i, 1, j - 1}]
Sum,Table這系列的函數迴圈得部分都可以設定變數
: 後來變成要寫一個函式 f[一串指數, 一串變數] 輸出的結果
: 是所有變數的排列的指定的指數次方的多項式 ← 啥? (= =),
: 例如 f[{1,1},{x,y,z,w}] = xy + xz + xw + yz + yw + zw
: f[{2,1},{x,y,z}] = x^2 y + x y^2 + x^2 z + x z^2 + y^2z + y z^2 等等
: 請教諸位板友,是否有較直觀的作法?
使用簡單的排列組合應該就可以,變數用C,次方用P
(*將次方分配到各個變數上*)
g[v_List, p_List] := Times @@ MapThread[#1^#2 &, {v, p}]
(*產生變數與次方得所有組合,套用到函數g上後做加總*)
ff[p_List, v_List] :=Plus@@g@@@Flatten[Table[{i, j},
{i, Subsets[v, {Length@p}]},
{j, Permutations[p, {Length@p}]}],1]
ff[{2, 1}, {x, y, z}]
x^2 y + x y^2 + x^2 z + y^2 z + x z^2 + y z^2
--
我打研究室走過 那獨坐電腦前的容顏如苦瓜的糾結
靈感不來 長壽的煙霧不散
研究室如小小的寂寞的城 恰如商管的電梯向晚
http://chungyuandye.twbbs.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.182.186
推
01/30 13:44, , 1F
01/30 13:44, 1F
→
01/30 13:46, , 2F
01/30 13:46, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章