作者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