Re: [問題] 將許多數值代入多項式

看板Mathematica作者 (Hysterisis)時間12年前 (2012/10/22 02:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言: ※ 引述《obelisk0114 (追風箏的孩子)》之銘言: : 我有數個多項式,每個多項式都有多個變數 : ex: a/(b + a) * (1 + c/d) - c/d : 每個變數都有好幾個可能值 : ex: a = a1 或 a2 或 a3 : b = b1 或 b2 或 b3 : c = c1 或 c2 或 c3 : d = d1 或 d2 或 d3 : 總共有 3^4 = 81 種組合 : 有甚麼好的寫法,讓我可以列出這 81 種組合的最大值和最小值? f[a_, b_, c_, d_] := a/(b + a)*(1 + c/d) - c/d; a = {a1, a2, a3}; b = {b1, b2, b3}; c = {c1, c2, c3}; d = {d1, d2, d3}; (* 兩個都可以 *) ans1=Flatten[Apply[f, Table[{m, n, o, p}, {m, a}, {n, b}, {o, c}, {p, d}], {4}], 3]; ans2=Flatten[Apply[f, Outer[List, a, b, c, d], {4}], 3] (* 最大,最小*) {Max@ans1,Min@ans1} {Max@ans2,Min@ans2} -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.128.130 ※ 編輯: chungyuandye 來自: 218.173.128.130 (10/21 23:06)

10/22 00:45,
可以得知最大/最小情況下的a,b,c,d值嗎?
10/22 00:45
以ans1為例,要達成要求就不能Flatten,拿掉改成 ans1=Apply[f, Table[{m, n, o, p}, {m, a}, {n, b}, {o, c}, {p, d}], {4}] 然後用Position[] 從ans1取出Max和Min的數組位置 Position[ans1, Max@ans1] 它的輸出是,例如 {{1,2,2,1}} 就是說 a[[1]], b[[2]], c[[2]], d[[1]] 代入是最大值 要自動列出的話稍加玩弄表達式得 max數組 = MapThread[Part, {{a,b,c,d}, Flatten@Position[ans1, Max@ans1]}] min數組 = MapThread[Part, {{a,b,c,d}, Flatten@Position[ans1, Min@ans1]}] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.88
文章代碼(AID): #1GX47U2l (Mathematica)
文章代碼(AID): #1GX47U2l (Mathematica)