FSOLVE requires all values returned by functions to be of data type double.

1 visualización (últimos 30 días)
nilesh patel
nilesh patel el 17 de Sept. de 2018
Editada: Matt J el 17 de Sept. de 2018
Function file
function [F]=DOF_HTL_Mitsuru_FUN(X)
global N F_psc X_F_psc X_W_psc X_G_psc X_O_psc X_WW_psc X_S_psc Rates_psc
%Stream Names:
%W= Water Feed
%F=Feed Biomass
%G=Gas Product
%O=Oil Product
%WW=Waste Product
%S=Soild Product
%Component Identification:
%H2O-Water
%C6H10O5-Cellulose
%CO2-Carbon Dioxide
%C6H12O6-Fructose
%C6H12O6p-Glucose
%C12H22O11-Cellobios
%C18H32O16-Cellotriose
%C24H42O21-Cellotetraose
%C30H52O26-Cellopentaose
%C36H62O31=Cellohexaose
%C6H10O5LVG-1,6-anhydroglucose (Levoglucosan)
%C4H8O4-Erythrose
%C2H4O2-Glycolaldehyde
%C3H603-Glyceraldehyde
%C3H6O3p-Dihydroacetone
%C3H4O2-Pyruvaldehyde
%C6H6O3-5-(hydroxymethyl)-furaldehyde(5-HMF)
%C5H4O2-Furaldehyde
%C-Char (Carbon)
%H2-Hydrogen
%Unknown Variables:
%Stream Flowrates:
F_G=X(1);
F_O=X(2);
F_WW=X(3);
F_S=X(4);
Flows=[F_psc(1);F_psc(2);-F_G;-F_O;-F_WW;-F_S];
%Stream Compositions:
%Water Feed (W) 1 Unknown
X_W_H2=X(5);
X_W=[X_W_psc(1:18);X(5);X_W_psc(19)];
%Feed Biomass (F) 1 Unknown
X_F_H2=X(6);
X_F=[X_F_psc(1:18);X(6);X_F_psc(19)];
%Gas Product (G) 3 Unknown
X_G_H2O=X(7);
X_G_CO2=X(8);
X_G_H2=X(9);
X_G=[X(7);X_G_psc(1);X(8);X_G_psc(2:16);X(9);X_G_psc(17)];
%Oil Product (O) 15 Unknown
X_O_C6H12O6=X(10);
X_O_C6H12O6p=X(11);
X_O_C12H22O11=X(12);
X_O_C18H32O16=X(13);
X_O_C24H42O21=X(14);
X_O_C30H52O26=X(15);
X_O_C36H62O31=X(16);
X_O_C6H10O5LVG=X(17);
X_O_C4H8O4=X(18);
X_O_C2H4O2=X(19);
X_O_C3H603=X(20);
X_O_C3H6O3p=X(21);
X_O_C3H4O2=X(22);
X_O_C6H3O3=X(23);
X_O_C5H4O2=X(24);
X_O=[X_O_psc(1:3);X(10:24)';X_O_psc(4:5)];
%Waste Water Product (WW) 1 Unknown
X_WW_H2O=X(25);
X_WW=[X(25);X_WW_psc(1:19)];
%Solid Product (S) 3 Unknown
X_S_H2O=X(26);
X_S_C6H10O5=X(27);
X_S_C=X(28);
X_S=[X(26:27)';X_S_psc(1:17);X(28)];
%Reaction Rates:
rH2O=X(29);
rC6H10O5=X(30);
rCO2=X(31);
Rates=[X(29:31)';Rates_psc(1:17)];
%Reaction Rates:
rC6H12O6=Rates_psc(1);
rC6H12O6p=Rates_psc(2);
rC12H22O11=Rates_psc(3);
rC18H32O16=Rates_psc(4);
rC24H42O21=Rates_psc(5);
rC30H52O26=Rates_psc(6);
rC36H62O31=Rates_psc(7);
rC6H10O5LVG=Rates_psc(8);
rC4H8O4=Rates_psc(9);
rC2H4O2=Rates_psc(10);
rC3H603=Rates_psc(11);
rC3H6O3p=Rates_psc(12);
rC3H4O2=Rates_psc(13);
rC6H6O3=Rates_psc(14);
rC5H4O2=Rates_psc(15);
rH2=Rates_psc(16);
rC=Rates_psc(17);
CompMatx=[X_F X_W X_G X_O X_WW X_S];
%Balances
for j=1:N
F(j)=CompMatx(j,:)*Flows+Rates(j);
end
%Stream Constraints
F(21)=sum(X_F)-1;
F(22)=sum(X_W)-1;
F(23)=sum(X_G)-1;
F(24)=sum(X_O)-1;
F(25)=sum(X_WW)-1;
F(26)=sum(X_S)-1;
%Reaction Rate Relationships
F(27)=(7*rC)/12 + rC2H4O2/3 - rC3H4O2/2 + rC3H6O3p/2 + (2*rC4H8O4)/3 - (13*rC5H4O2)/6 - (55*rC6H6O3)/24 + rC3H603/2 + rC6H12O6 + rC6H12O6p + rC12H22O11 + rC18H32O16 + rC24H42O21 + rC30H52O26 - (5*rH2)/6 + rH2O + rC36H62O31;
F(28)=rC/12 + rC2H4O2/3 + rC3H4O2/2 + rC3H6O3p/2 + (2*rC4H8O4)/3 + (5*rC5H4O2)/6 + (23*rC6H6O3)/24 + rC3H603/2 + rC6H10O5 + rC6H12O6 + rC6H12O6p + rC6H10O5LVG + 2*rC12H22O11 + 3*rC18H32O16 + 4*rC24H42O21 + 5*rC30H52O26 + rH2/6 + 6*rC36H62O31;
F(29)=rC6H6O3/4 - rC/2 + rCO2;
F(30)=X(7)-.01; %Fraction water in G product
F(31)=X(26)-.01; %Fraction water in S product
end
Code to run Function file
global N F_psc X_F_psc X_W_psc X_G_psc X_O_psc X_WW_psc X_S_psc Rates_psc
syms rH20 rC6H10O5 rCO2 rC6H12O6 rC6H12O6p rC12H22O11 rC18H32O16 rC24H42O21...
rC30H52O26 rC36H62O31 rC6H10O5LVG rC4H8O4 rC2H4O2 rC3H603 rC3H6O3p rC3H4O2...
rC6H6O3 rC5H4O2 rC rH2;
syms H20 C6H10O5 CO2 C6H12O6 C6H12O6p C12H22O11 C18H32O16 C24H42O21...
C30H52O26 C36H62O31 C6H10O5LVG C4H8O4 C2H4O2 C3H603 C3H6O3p C3H4O2...
C6H6O3 C5H4O2 C H2;
N=20; %Number of Species
M=6; %Number of Stream
p=2; %Number of Phases
n=1; %Number of Species in Equilibrium
q=0; %No Heat Balance, i.e. q=0
%Chemical Composition Matrix (CCM) for the species in syms devinition above
CCM=[0 6 1 6 6 12 18 24 30 36 6 4 2 3 3 3 6 5 0 1;2 10 0 12 12 22 32 42 52 62 10 8 4 6 6 4 5 4 2 0;1 5 2 6 6 11 16 21 26 31 5 4 2 3 3 2 3 2 0 0];
RANK=rank(CCM); %Number of reaction rate relationships
RREF=rref(CCM); %The row reduced Echelon form (RREF) Matrix
RateNames=[rH20 rC6H10O5 rCO2 rC6H12O6 rC6H12O6p rC12H22O11 rC18H32O16 rC24H42O21...
rC30H52O26 rC36H62O31 rC6H10O5LVG rC4H8O4 rC2H4O2 rC3H603 rC3H6O3p rC3H4O2...
rC6H6O3 rC5H4O2 rC rH2];
SpeciesNames=[H20 C6H10O5 CO2 C6H12O6 C6H12O6p C12H22O11 C18H32O16 C24H42O21...
C30H52O26 C36H62O31 C6H10O5LVG C4H8O4 C2H4O2 C3H603 C3H6O3p C3H4O2...
C6H6O3 C5H4O2 C H2];
RateNames=RateNames.';
SpeciesNames=SpeciesNames.';
RRR=rref(CCM)*RateNames; %The reaction Rate Relationsships
CoefMatrix=RREF(1:RANK,RANK+1:end);
CoefMatrix=CoefMatrix.';
I=-eye(N-RANK);
[CoefMatrix,I]*SpeciesNames; %The reaction schemata
%Degrees of Freedom (DOF) Analysis
C=(20-1)+(20-1)+(17)+(20-15)+(19)+(17); %Number of Species specified
F=2; %Number of flows specified
NR=N-RANK; %Number of reaction rates specified
OC=1; %Number of Other Constraints (OC)
T=1; %Number of temperatures specified
P=1; %Number of pressures specified
GDF=M+M*N+N+2+q*(2*M+1);
GC=M+N+n*(p-1)+q+RANK;
PSC=GDF-GC;
DF=C+F+NR+OC+T+P;
EQ=GC+OC;
%Particular and Specific Constraints (PSC):
%Stream flowrates:
F_F=1; %moles/h
F_W=2; %moles/h
F_psc=[F_F;F_W];
%Stream Compositions:
%Feed(F)
X_F_H2O=.01;
X_F_C6H10O5=.96;
X_F_CO2=.01;
X_F_C6H12O6=.01;
X_F_C6H12O6p=0;
X_F_C12H22O11=0;
X_F_C18H32O16=0;
X_F_C24H42O21=0;
X_F_C30H52O26=0;
X_F_C36H62O31=0;
X_F_C6H10O5LVG=0;
X_F_C4H8O4=0;
X_F_C2H4O2=0;
X_F_C3H603=0;
X_F_C3H6O3p=0;
X_F_C3H4O2=0;
X_F_C6H6O3=0;
X_F_C5H4O2=0;
X_F_C=.01;
X_F_psc=[X_F_H2O;
X_F_C6H10O5;
X_F_CO2;
X_F_C6H12O6;
X_F_C6H12O6p;
X_F_C12H22O11;
X_F_C18H32O16;
X_F_C24H42O21;
X_F_C30H52O26;
X_F_C36H62O31;
X_F_C6H10O5LVG;
X_F_C4H8O4;
X_F_C2H4O2;
X_F_C3H603;
X_F_C3H6O3p;
X_F_C3H4O2;
X_F_C6H6O3;
X_F_C5H4O2;
X_F_C];
%Water Feed(W)
X_W_H2O=1;
X_W_C6H10O5=0;
X_W_CO2=0;
X_W_C6H12O6=0;
X_W_C6H12O6p=0;
X_W_C12H22O11=0;
X_W_C18H32O16=0;
X_W_C24H42O21=0;
X_W_C30H52O26=0;
X_W_C36H62O31=0;
X_W_C6H10O5LVG=0;
X_W_C4H8O4=0;
X_W_C2H4O2=0;
X_W_C3H603=0;
X_W_C3H6O3p=0;
X_W_C3H4O2=0;
X_W_C6H6O3=0;
X_W_C5H4O2=0;
X_W_C=0;
X_W_psc=[X_F_H2O;
X_W_C6H10O5;
X_W_CO2;
X_W_C6H12O6;
X_W_C6H12O6p;
X_W_C12H22O11;
X_W_C18H32O16;
X_W_C24H42O21;
X_W_C30H52O26;
X_W_C36H62O31;
X_W_C6H10O5LVG;
X_W_C4H8O4;
X_W_C2H4O2;
X_W_C3H603;
X_W_C3H6O3p;
X_W_C3H4O2;
X_W_C6H6O3;
X_W_C5H4O2;
X_W_C];
%Gas Product(G)
X_G_C6H10O5=0;
X_G_C6H12O6=0;
X_G_C6H12O6p=0;
X_G_C12H22O11=0;
X_G_C18H32O16=0;
X_G_C24H42O21=0;
X_G_C30H52O26=0;
X_G_C36H62O31=0;
X_G_C6H10O5LVG=0;
X_G_C4H8O4=0;
X_G_C2H4O2=0;
X_G_C3H603=0;
X_G_C3H6O3p=0;
X_G_C3H4O2=0;
X_G_C6H6O3=0;
X_G_C5H4O2=0;
X_G_C=0;
X_G_psc=[X_G_C6H10O5;
X_G_C6H12O6;
X_G_C6H12O6p;
X_G_C12H22O11;
X_G_C18H32O16;
X_G_C24H42O21;
X_G_C30H52O26;
X_G_C36H62O31;
X_G_C6H10O5LVG;
X_G_C4H8O4;
X_G_C2H4O2;
X_G_C3H603;
X_G_C3H6O3p;
X_G_C3H4O2;
X_G_C6H6O3;
X_G_C5H4O2;
X_G_C];
%Oil Product(O)
X_O_H2O=0;
X_O_C6H10O5=0;
X_O_CO2=0;
X_O_H2=0;
X_O_C=0;
X_O_psc=[X_O_H2O;
X_O_C6H10O5;
X_O_CO2;
X_O_H2;
X_O_C];
% Waste Water Product(WW)
X_WW_C6H10O5=0;
X_WW_CO2=0;
X_WW_C6H12O6=0;
X_WW_C6H12O6p=0;
X_WW_C12H22O11=0;
X_WW_C18H32O16=0;
X_WW_C24H42O21=0;
X_WW_C30H52O26=0;
X_WW_C36H62O31=0;
X_WW_C6H10O5LVG=0;
X_WW_C4H8O4=0;
X_WW_C2H4O2=0;
X_WW_C3H603=0;
X_WW_C3H6O3p=0;
X_WW_C3H4O2=0;
X_WW_C6H6O3=0;
X_WW_C5H4O2=0;
X_WW_H2=0;
X_WW_C=0;
X_WW_psc=[X_WW_C6H10O5;
X_WW_CO2;
X_WW_C6H12O6;
X_WW_C6H12O6p;
X_WW_C12H22O11;
X_WW_C18H32O16;
X_WW_C24H42O21;
X_WW_C30H52O26;
X_WW_C36H62O31;
X_WW_C6H10O5LVG;
X_WW_C4H8O4;
X_WW_C2H4O2;
X_WW_C3H603;
X_WW_C3H6O3p;
X_WW_C3H4O2;
X_WW_C6H6O3;
X_WW_C5H4O2;
X_WW_H2;
X_WW_C];
%Solid Product(S)
X_S_CO2=0;
X_S_C6H12O6=0;
X_S_C6H12O6p=0;
X_S_C12H22O11=0;
X_S_C18H32O16=0;
X_S_C24H42O21=0;
X_S_C30H52O26=0;
X_S_C36H62O31=0;
X_S_C6H10O5LVG=0;
X_S_C4H8O4=0;
X_S_C2H4O2=0;
X_S_C3H603=0;
X_S_C3H6O3p=0;
X_S_C3H4O2=0;
X_S_C6H6O3=0;
X_S_C5H4O2=0;
X_S_H2=0;
X_S_psc=[X_S_CO2;
X_S_C6H12O6;
X_S_C6H12O6p;
X_S_C12H22O11;
X_S_C18H32O16;
X_S_C24H42O21;
X_S_C30H52O26;
X_S_C36H62O31;
X_S_C6H10O5LVG;
X_S_C4H8O4;
X_S_C2H4O2;
X_S_C3H603;
X_S_C3H6O3p;
X_S_C3H4O2;
X_S_C6H6O3;
X_S_C5H4O2;
X_S_H2];
%Reaction Rates:
rC6H12O6=0.32;
rC6H12O6p=0.32;
rC12H22O11=0.32;
rC18H32O16=0.32;
rC24H42O21=0.32;
rC30H52O26=0.32;
rC36H62O31=0.32;
rC6H10O5LVG=0.32;
rC4H8O4=0.32;
rC2H4O2=0.32;
rC3H603=0.32;
rC3H6O3p=0.32;
rC3H4O2=0.32;
rC6H6O3=0.32;
rC5H4O2=0.32;
rH2=0.8;
rC-0.04;
Rates_psc=[rC6H12O6;
rC6H12O6p;
rC12H22O11;
rC18H32O16;
rC24H42O21;
rC30H52O26;
rC36H62O31;
rC6H10O5LVG;
rC4H8O4;
rC2H4O2;
rC3H603;
rC3H6O3p;
rC3H4O2;
rC6H6O3;
rC5H4O2;
rH2;
rC];
Xguess=[0 0 1 1 ones(1,27)];
[X,fval, Flag]=fsolve(@DOF_HTL_Mitsuru_FUN,Xguess);
fval
X
sprintf('If 1, the program terminated normally = %4i',Flag)
sprintf('F_G = %8.5f \nF_O = %8.5f \nF_WW = %8.5f \nF_S = %8.5f \nX_W_H2 = %8.5f \nX_F_H2 = %8.5f \nX_G_H2O = %8.5f \nX_G_CO2 = %8.5f \nX_G_H2 = %8.5f \nX_O_C6H12O6 = %8.5f \nX_O_C6H12O6p = %8.5f \nX_O_C12H22O11 = %8.5f \nX_O_C18H32O16 = %8.5f \nX_O_C24H42O21 = %8.5f \nX_O_C30H52O26 = %8.5f \nX_O_C36H62O31 = %8.5f \nX_O_C6H10O5LVG = %8.5f \nX_O_C4H8O4 = %8.5f \nX_O_C2H4O2 = %8.5f \nX_O_C3H6O3 = %8.5f \nX_O_C3H6O3p = %8.5f \nX_O_C3H4O2 = %8.5f \nX_O_C6H6O3 = %8.5f \nX_O_C5H4O2 = %8.5f \nX_WW_H20 = %8.5f \nX_S_H2O = %8.5f \nX_S_C6H10O5 = %8.5f \nX_S_C = %8.5f \nrH2O = %8.5f \nrC6H10O5 = %8.5f \nrCO2 = %8.5f',...
X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8), X(9), X(10), X(11), X(12), X(13), X(14), X(15), ...
X(16), X(17), X(18), X(19), X(20), X(21), X(22), X(23), X(24), X(25), X(26), X(27), X(28), X(29), X(30), X(31))
sprintf('Cellulose Conversion = %8.5f', (F_F*X_F_C6H10O5-X(4)*X(27))/F_F*X_F_C6H10O5)

Respuestas (1)

Matt J
Matt J el 17 de Sept. de 2018
Editada: Matt J el 17 de Sept. de 2018
Make sure your objective function file is returning numbers for a given input X and not symbolic expressions. I don't see you converting the results of your symbolic manipulations with
syms rH20 rC6H10O5 rCO2 rC6H12O6 rC6H12O6p rC12H22O11 rC18H32O16 rC24H42O21...
rC30H52O26 rC36H62O31 rC6H10O5LVG rC4H8O4 rC2H4O2 rC3H603 rC3H6O3p rC3H4O2...
rC6H6O3 rC5H4O2 rC rH2;
syms H20 C6H10O5 CO2 C6H12O6 C6H12O6p C12H22O11 C18H32O16 C24H42O21...
C30H52O26 C36H62O31 C6H10O5LVG C4H8O4 C2H4O2 C3H603 C3H6O3p C3H4O2...
C6H6O3 C5H4O2 C H2;
back to a numerical result.

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by