Re: [問題] 將許多數值代入多項式
※ 引述《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,
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章