作者DennisTang (笑得很勉強)
看板MATLAB
標題[問題] 如何造出符合所有條件的矩陣
時間Sat Nov 16 01:31:48 2013
大家好,
假設我現在有個方程式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
1F:→ YoursEver:請把equation寫下來,否則大家不知道你的scale要做什麼. 11/16 21:48
2F:→ YoursEver:你現在的寫法有無窮多組解,所以你必須要把問題說仔細些. 11/16 21:48
3F:→ doom8199:他的 scale 應該是求非負整數解 n1 + n2 + n3 = 1/scale 11/16 23:40
4F:→ doom8199:(n1,n2,n3) 為遞減序列, 且 (x1,x2,x3)=scale*(n1,n2,n3) 11/16 23:42
5F:→ DennisTang:抱歉沒有講清楚,我想要列出所有的非負整數解 :) 11/17 09:55
6F:→ DennisTang:而scale是指這些解的距離,例如x1就是從1, 0.9, 0.8,.. 11/17 09:56
7F:→ DennisTang:一直到0.4,因為我的條件是x1 >= x2 >= x3 11/17 09:57
※ 編輯: DennisTang 來自: 123.195.5.189 (11/17 10:04)
8F:→ DennisTang:已修改文章使文章更清楚一點 11/17 10:05