看板 MATLAB 關於我們 聯絡資訊
大家好, 假設我現在有個方程式x1 + x2 + x3 = 1 x1 >= x2 >= x3 >=0, 而有個參數叫scale = 0.1 我想造出符合這個限制的所有解, 例如[ x1, x2, x3] = [ 1, 0, 0; ... 0.9, 0.1, 0; ... 0.8, 0.2, 0; ... 0.8, 0.1, 0.1; ... 0.7, 0.3, 0; ... 0.7, 0.2, 0.1; ... 0.6, 0.4, 0; ... 0.6, 0.3, 0.1; ... 0.6, 0.2, 0.2; ... . . . scale=0.1是指我原來用for loop造的話, for x1 = 1 : 0.1 : 0 for x2 = 0: 0.1: 1-x1 x3 = 1- x1 -x2 end end 我本來是用for loop硬算,但是現在要解的維度很大, 所以想請問有沒有內建的函數或是任何有幫助的函數? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.5.189
YoursEver:請把equation寫下來,否則大家不知道你的scale要做什麼. 11/16 21:48
YoursEver:你現在的寫法有無窮多組解,所以你必須要把問題說仔細些. 11/16 21:48
doom8199:他的 scale 應該是求非負整數解 n1 + n2 + n3 = 1/scale 11/16 23:40
doom8199:(n1,n2,n3) 為遞減序列, 且 (x1,x2,x3)=scale*(n1,n2,n3) 11/16 23:42
DennisTang:抱歉沒有講清楚,我想要列出所有的非負整數解 :) 11/17 09:55
DennisTang:而scale是指這些解的距離,例如x1就是從1, 0.9, 0.8,.. 11/17 09:56
DennisTang:一直到0.4,因為我的條件是x1 >= x2 >= x3 11/17 09:57
※ 編輯: DennisTang 來自: 123.195.5.189 (11/17 10:04)
DennisTang:已修改文章使文章更清楚一點 11/17 10:05