Index in position 2 exceeds array bounds (must not exceed 1).
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Chinaemerem Valentine Nwobi
am 4 Mai 2019
Kommentiert: Chinaemerem Valentine Nwobi
am 4 Mai 2019
%% am encountering difficulty with my codes below and I will be pasting the
%the function file and the input parameters to run them with.
%%
function [gamma,a]=ACTIVITY_WILSON(MW,rhoL,BIP,T,x)
%This program calculates the activity coefficients (gamma) and the
%activities (a) of each component of a mixture of c components using the
%Wilson model.
%INPUT PARAMETERS: MW: vector (1xc) reporting the molecular weights of the
%c components; rhoL, vector (1xc) reporting the liquid density of the c
%pure components at temperature T; BIP is a matrix cxc reporting the energy
%interaction parameters (BIP(i,j)=lambda_ij-lambda_ii, J/mol). The energy
%interaction parameters are temperature independent; T: temperature of the
%system; x vector (1xc) reporting the mole fractions of the components of
%the mixture.
%OUTPUT PARAMETERS: gamma: vector 1xc reporting the activity
%coefficients of the components of the mixture; a: vector 1xc reporting the
%activities of the components of the mixture.
%Unless otherwise stated, all input/output parameters are expressed
%according to MKS.
R=8.314;
c=length(x);
%Molar volumes of the pure liquid components composing the mixture
Vl=1./((rhoL*1000)./MW);
%Lambda terms (dimensionless) of the Wilson formula
for i=1:c
for j=1:c
Lambda(i,j)=(Vl(j)/Vl(i))*exp(-BIP(i,j)/(R*T));
end
end
for i=1:c
for j=1:c
A=sum(x.*Lambda(j,:));
C(j)=x(j)*Lambda(j,i)/A;
end
lngamma(i)=1-log(sum(x.*Lambda(i,:)))-sum(C);
gamma(i)=exp(lngamma(i));
a(i)=gamma(i)*x(i);
end
end
%%
x= Varying from 0 to 1;
MW=[46.0684 18.0153];
rhoL=[785 997];
BIP=[1972.2 ; 3700.1];
%%
Please help me find what am doing wrong . thank you but please comment if there is something am doing wrong with the way i ask because I never got replies before now.
1 Kommentar
Akzeptierte Antwort
KALYAN ACHARJYA
am 4 Mai 2019
Bearbeitet: KALYAN ACHARJYA
am 4 Mai 2019
Save the following function file>Save as : ACTIVITY_WILSON.m file name
function [gamma,a]=ACTIVITY_WILSON(MW,rhoL,BIP,T,x)
R=8.314;
c=length(x);
%Molar volumes of the pure liquid components composing the mixture
Vl=1./((rhoL*1000)./MW);
%Lambda terms (dimensionless) of the Wilson formula
for i=1:c
for j=1:c
Lambda(i,j)=(Vl(j)/Vl(i))*exp(-BIP(i,j)/(R*T));
end
end
for i=1:c
for j=1:c
A=sum(x.*Lambda(j,:));
C(j)=x(j)*Lambda(j,i)/A;
end
lngamma(i)=1-log(sum(x.*Lambda(i,:)))-sum(C);
gamma(i)=exp(lngamma(i));
a(i)=gamma(i)*x(i);
end
end
Now call the above function from different Matlab scripts file:
%%
x=0.2; % Any value 0 to 1
MW=[46.0684 18.0153];
rhoL=[785 997];
BIP=[1972.2; 3700.1];
T=30; % Hopefully this is tempature, set accordingly
[gamma,a]=ACTIVITY_WILSON(MW,rhoL,BIP,T,x)
Result
gamma =
1.358311135425136e+04
a =
2.716622270850272e+03
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Desktop finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!