[問題] 如何造出符合所有條件的解的矩陣

看板MATLAB作者 (笑得很勉強)時間10年前 (2013/11/16 01:31), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/2 (看更多)
大家好, 假設我現在有個方程式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

11/16 21:48, , 1F
請把equation寫下來,否則大家不知道你的scale要做什麼.
11/16 21:48, 1F

11/16 21:48, , 2F
你現在的寫法有無窮多組解,所以你必須要把問題說仔細些.
11/16 21:48, 2F

11/16 23:40, , 3F
他的 scale 應該是求非負整數解 n1 + n2 + n3 = 1/scale
11/16 23:40, 3F

11/16 23:42, , 4F
(n1,n2,n3) 為遞減序列, 且 (x1,x2,x3)=scale*(n1,n2,n3)
11/16 23:42, 4F

11/17 09:55, , 5F
抱歉沒有講清楚,我想要列出所有的非負整數解 :)
11/17 09:55, 5F

11/17 09:56, , 6F
而scale是指這些解的距離,例如x1就是從1, 0.9, 0.8,..
11/17 09:56, 6F

11/17 09:57, , 7F
一直到0.4,因為我的條件是x1 >= x2 >= x3
11/17 09:57, 7F
※ 編輯: DennisTang 來自: 123.195.5.189 (11/17 10:04)

11/17 10:05, , 8F
已修改文章使文章更清楚一點
11/17 10:05, 8F
文章代碼(AID): #1IXbg7SR (MATLAB)
文章代碼(AID): #1IXbg7SR (MATLAB)