Is there a way to come up with all the combination between 0 and 1 that sum up to equal 1?

조회 수: 1 (최근 30일)
Is there a way to come up with all the combination between 0 and 1 that sum up to equal 1?
  1. All combination between 0 and 1. y4 = [Ny4 Hy4 Ay4 Cy4] , if sum(y4) = 1
  2. Put Them into sum(((K-1).*y4)./(1+(K-1)*v)) = 0 to solve for v.
  3. Then x5 = y4./(1+(K-1).*v), if sum(x5) = 1
  4. finally y6 = K.*x5, if sum(y6) = 1
When I used nchoosek([0:1/10000:1],4) I get error.
Error using zeros
Maximum variable size allowed by the program is exceeded.
Error in nchoosek>combs (line 164)
P = zeros(total, k, 'like', v);
Error in nchoosek (line 123)
c = combs(v,k);
I solved this using excel solver, that is how I got the values.
% guess mole fraction for stream 4 the feed into the flash separator.
% the sum of all 4 must equal 1.
Ny4 = 0.108536069;
Hy4 = 0.772457477;
Ay4 = 0.117147745;
Cy4 = 0.001858709;
y4 = [Ny4 Hy4 Ay4 Cy4];
% K-value given
NK = 4.8;
HK = 70;
AK = .051;
CK = .32;
K = [NK HK AK CK];
% guess ratio
% v is want I want to solve for when t(v) = 0
v =.925028796;
t = sum(((K-1).*y4)./(1+(K-1)*v));
% mole fraction for stream 5 the liquid out the flash separator.
% the sum of all 4 must equal 1.
x5 = y4./(1+(K-1).*v)
testx5= sum(x5)
% mole fraction for stream 6 the vapor out the flash separator.
% the sum of all 4 must equal 1.
y6 = K.*x5
testy6 = sum(y6)

답변 (1개)

KSSV
KSSV 2020년 1월 7일
x = 0:1/100:1 ;
id = nchoosek(1:length(x),4) ;
thesum = sum(x(id),2) ;
% find sum == 1
idx = thesum==1 ;
iwant = x(id(idx,:)) ;
  댓글 수: 4
A C
A C 2020년 1월 8일
I am sorry that I did not explain my problem. When I use 1/10000 it gives me a error.
Do you get the same errors?
x = 0:1/10000:1 ;
id = nchoosek(1:length(x),4) ;
x = x(id) ; % nx4 array of all x's
Error using zeros
Maximum variable size allowed by the program is exceeded.
Error in nchoosek>combs (line 164)
P = zeros(total, k, 'like', v);
Error in nchoosek (line 123)
c = combs(v,k);
KSSV
KSSV 2020년 1월 9일
It might be dude to x is large and posing memory issues. You can split x into multiple parts, and get the job done.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by