MATLAB: Problem with fsolve: system of 6 nonlinear equations and more

fsolveMATLABnonlinearsystem

I'm trying to solve the following system of nonlinear equations with fsolve:
function F=equations(x)
F(1)=h_hot*(Tav_hot-Thot_membrane)-((Thot_in-Thot_out)*Mav_hot*CP_w)/Am;
F(2)=h_hot*(Tav_hot-Thot_membrane)-(lambda*Nd_l+hmembrane*(Thot_membrane-Tcold_membrane));
F(3)=(lambda*Nd_l+hmembrane*(Thot_membrane-Tcold_membrane))-Kw/dhelta3*(Tcold_membrane-Thot_coolingplate);
F(4)=Kw/dhelta3*(Tcold_membrane-Thot_coolingplate)-Kp/dhelta4*(Thot_coolingplate-Tcold_coolingplate);
F(5)=Kp/dhelta4*(Thot_coolingplate-Tcold_coolingplate)-h_cold*(Tcold_coolingplate-Tav_cold);
F(6)=h_cold*(Tcold_coolingplate-Tav_cold)-CP_w*Mcold_in*(Tcold_out-Tcold_in)/Am;
x0=[310 300 315 312 311 295] %[310 300 315 312 311 295];
options=optimset('Display','iter')
[x,fval,exit,output]=fsolve(@equations,x0,options)
equations_guess=equations(x0)
And it returns:
Norm of First-order Trust-region
Iteration Func-count f(x) step optimality radius
0 7 1.81204e+12 1.19e+10 1
1 14 1.7734e+12 1 1.55e+10 1
2 21 1.72466e+12 2.5 1.67e+10 2.5
3 22 1.72466e+12 2.5 1.67e+10 2.5
4 29 1.68914e+12 0.625 3.03e+10 0.625
5 30 1.68914e+12 1.5625 3.03e+10 1.56
6 37 1.64038e+12 0.390625 1.27e+11 0.391
7 38 1.64038e+12 0.976562 1.27e+11 0.977
8 39 1.64038e+12 0.244141 1.27e+11 0.244
9 46 1.60886e+12 0.0610352 5.91e+11 0.061
10 47 1.60886e+12 0.152588 5.91e+11 0.153
11 48 1.60886e+12 0.038147 5.91e+11 0.0381
12 55 1.5969e+12 0.00953674 1.43e+12 0.00954
13 56 1.5969e+12 0.00953674 1.43e+12 0.00954
14 63 1.57561e+12 0.00238419 1.59e+13 0.00238
15 64 1.57561e+12 0.00596046 1.59e+13 0.00596
16 65 1.57561e+12 0.00149012 1.59e+13 0.00149
17 66 1.57561e+12 0.000372529 1.59e+13 0.000373
18 73 1.56808e+12 9.31323e-05 7.44e+13 9.31e-05
19 74 1.56808e+12 0.000232831 7.44e+13 0.000233
20 75 1.56808e+12 5.82077e-05 7.44e+13 5.82e-05
21 82 1.56316e+12 1.45519e-05 1.02e+15 1.46e-05
22 83 1.56316e+12 3.63798e-05 1.02e+15 3.64e-05
23 84 1.56316e+12 9.09495e-06 1.02e+15 9.09e-06
24 91 1.56124e+12 2.27374e-06 7.19e+14 2.27e-06
25 92 1.56124e+12 2.27374e-06 7.19e+14 2.27e-06
26 99 1.56106e+12 5.68434e-07 6.46e+14 5.68e-07
27 106 1.56073e+12 5.68434e-07 7.09e+14 5.68e-07
28 113 1.56057e+12 5.68434e-07 6.43e+14 5.68e-07
29 120 1.56023e+12 5.68434e-07 7.04e+14 5.68e-07
30 127 1.5601e+12 5.68434e-07 6.43e+14 5.68e-07
31 134 1.55975e+12 5.68434e-07 7.01e+14 5.68e-07
32 141 1.55965e+12 5.68434e-07 6.44e+14 5.68e-07
33 148 1.55927e+12 5.68434e-07 6.99e+14 5.68e-07
34 155 1.5592e+12 5.68434e-07 6.46e+14 5.68e-07
35 162 1.55881e+12 5.68434e-07 6.96e+14 5.68e-07
36 163 1.55881e+12 5.68434e-07 6.96e+14 5.68e-07
37 170 1.55868e+12 1.42109e-07 7.35e+14 1.42e-07
38 177 1.55862e+12 1.42109e-07 7.28e+14 1.42e-07
39 184 1.55855e+12 1.42109e-07 7.36e+14 1.42e-07
40 191 1.55849e+12 1.42109e-07 7.3e+14 1.42e-07
41 198 1.55841e+12 1.42109e-07 7.38e+14 1.42e-07
42 205 1.55836e+12 1.42109e-07 7.32e+14 1.42e-07
43 212 1.55828e+12 1.42109e-07 7.4e+14 1.42e-07
44 219 1.55822e+12 1.42109e-07 7.34e+14 1.42e-07
45 226 1.55814e+12 1.42109e-07 7.42e+14 1.42e-07
46 233 1.55808e+12 1.42109e-07 7.36e+14 1.42e-07
47 240 1.558e+12 1.42109e-07 7.44e+14 1.42e-07
48 247 1.55794e+12 1.42109e-07 7.38e+14 1.42e-07
49 254 1.55785e+12 1.42109e-07 7.46e+14 1.42e-07
50 261 1.55779e+12 1.42109e-07 7.4e+14 1.42e-07
51 268 1.5577e+12 1.42109e-07 7.48e+14 1.42e-07
52 275 1.55764e+12 1.42109e-07 7.42e+14 1.42e-07
53 282 1.55755e+12 1.42109e-07 7.5e+14 1.42e-07
54 289 1.55749e+12 1.42109e-07 7.44e+14 1.42e-07
55 296 1.5574e+12 1.42109e-07 7.51e+14 1.42e-07
56 303 1.55733e+12 1.42109e-07 7.46e+14 1.42e-07
57 310 1.55724e+12 1.42109e-07 7.53e+14 1.42e-07
58 317 1.55717e+12 1.42109e-07 7.48e+14 1.42e-07
59 324 1.55707e+12 1.42109e-07 7.55e+14 1.42e-07
60 331 1.55701e+12 1.42109e-07 7.5e+14 1.42e-07
61 338 1.5569e+12 1.42109e-07 7.57e+14 1.42e-07
62 345 1.55683e+12 1.42109e-07 7.52e+14 1.42e-07
63 352 1.55673e+12 1.42109e-07 7.58e+14 1.42e-07
64 359 1.55666e+12 1.42109e-07 7.53e+14 1.42e-07
65 366 1.55655e+12 1.42109e-07 7.59e+14 1.42e-07
66 373 1.55648e+12 1.42109e-07 7.55e+14 1.42e-07
67 380 1.55637e+12 1.42109e-07 7.6e+14 1.42e-07
68 387 1.5563e+12 1.42109e-07 7.56e+14 1.42e-07
69 394 1.55618e+12 1.42109e-07 7.6e+14 1.42e-07
70 401 1.55612e+12 1.42109e-07 7.56e+14 1.42e-07
71 408 1.556e+12 1.42109e-07 7.6e+14 1.42e-07
72 415 1.55594e+12 1.42109e-07 7.56e+14 1.42e-07
73 422 1.55583e+12 1.42109e-07 7.59e+14 1.42e-07
74 429 1.55577e+12 1.42109e-07 7.55e+14 1.42e-07
75 436 1.55566e+12 1.42109e-07 7.57e+14 1.42e-07
76 443 1.55561e+12 1.42109e-07 7.54e+14 1.42e-07
77 450 1.55552e+12 1.42109e-07 7.55e+14 1.42e-07
78 457 1.55548e+12 1.42109e-07 7.52e+14 1.42e-07
79 464 1.55541e+12 1.42109e-07 7.52e+14 1.42e-07
80 471 1.55538e+12 1.42109e-07 7.49e+14 1.42e-07
81 478 1.55532e+12 1.42109e-07 7.49e+14 1.42e-07
82 485 1.5553e+12 1.42109e-07 7.47e+14 1.42e-07
83 492 1.55526e+12 1.42109e-07 7.46e+14 1.42e-07
84 499 1.55525e+12 1.42109e-07 7.44e+14 1.42e-07
85 506 1.55522e+12 1.42109e-07 7.44e+14 1.42e-07
86 507 1.55522e+12 1.42109e-07 7.44e+14 1.42e-07
87 514 1.55469e+12 3.55271e-08 7.77e+14 3.55e-08
88 515 1.55469e+12 8.88178e-08 7.77e+14 8.88e-08
89 522 1.55435e+12 2.22045e-08 8.05e+14 2.22e-08
90 523 1.55435e+12 5.55112e-08 8.05e+14 5.55e-08
91 530 1.55421e+12 1.38778e-08 8.28e+14 1.39e-08
92 531 1.55421e+12 3.46945e-08 8.28e+14 3.47e-08
93 538 1.5542e+12 8.67362e-09 8.24e+14 8.67e-09
94 545 1.55416e+12 8.67362e-09 8.28e+14 8.67e-09
95 546 1.55416e+12 2.1684e-08 8.28e+14 2.17e-08
96 553 1.55415e+12 5.42101e-09 8.3e+14 5.42e-09
97 554 1.55415e+12 1.35525e-08 8.3e+14 1.36e-08
98 561 1.55413e+12 3.38813e-09 8.32e+14 3.39e-09
99 562 1.55413e+12 8.47033e-09 8.32e+14 8.47e-09
100 569 1.55413e+12 2.11758e-09 8.32e+14 2.12e-09
101 576 1.55412e+12 5.29396e-09 8.27e+14 5.29e-09
102 583 1.55409e+12 5.29396e-09 8.33e+14 5.29e-09
103 584 1.55409e+12 1.32349e-08 8.33e+14 1.32e-08
104 591 1.55408e+12 3.30872e-09 8.3e+14 3.31e-09
105 598 1.55407e+12 8.27181e-09 8.23e+14 8.27e-09
106 605 1.55403e+12 8.27181e-09 8.31e+14 8.27e-09
Solver stopped prematurely.
fsolve stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 600 (the default value).
x =
1.0e+02 *
3.0994 - 0.0000i 3.0095 + 0.0000i 3.1319 + 0.0000i 3.1319 + 0.0000i 3.1148 - 0.0000i 2.9335 - 0.0000i
fval =
1.0e+05 *
-0.4949 + 0.1306i -0.4949 + 0.1306i -0.0036 - 0.0000i -0.5144 + 0.0000i -8.6309 - 0.0000i 8.9511 - 0.0000i
exit =
0
output =
iterations: 106
funcCount: 605
algorithm: 'trust-region-dogleg'
firstorderopt: 8.3052e+14
message: 'Solver stopped prematurely.
fsolve stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 60...'
equations_guess=
1.0e+05 *
-3.2452 -3.4664 0.2218 -0.4550 -8.7591 9.0376
Could anyone tell me what I have to do to get through the problem? Moreover I don't know why the solution x and fval become complex numbers. It's clear that increasing the number of iterations won't help!!
Thank you!!!!
The complete code is copied below, if anyone finds it necessary:
function solve()
clc
%Parameters
%modulo
%L=1; %lunghezza m
%W=0.5; %larghezza m
%spacer
%df= %filament diameter m
%deltha1=3; %thickness m
%es= %porosity
%THspacer= %angle porosity
%hot channel
deltha1=0.003; %thickness m



%dh= %equivalent diameter m
Apax=deltha1*0.03; %trasverse surface m^2
Deq=2*deltha1; %equivalent diameter m
%membrane
epsilon=0.8; %porosity
Am=0.0417; %surface m^2
dp=2.00E-07; %pore diameter m
dhelta2 =2.50E-04; %thickness m
Km= 0.25; %conductivity W/mK

tau= 1.5; %tortuosity
K1= epsilon/tau;
K0= (2/3)*K1*(dp/2);
%airgap
dhelta3= 0.003; %thickness m
%Kag= %conductivity water-air W/mK
%coolant plate
dhelta4= 7.00E-05; %thickness m
Kp=0.2; %conductivity W/mK
%Antoine law log(10)P[mmHg]=A-B/(C+T[°C])
A=8.07131; B=1730.63; C=233.426;
%other parameters
lambda=2200000; %latent heat of vapor j/kg
Patm= 101325; %Pa
CP_w= 4186; %Cp water j/kgK
CP_vap= 1900; %Cp vap j/kgK
MU_cold= 8.55E-04; %viscosity cold Pa*s
MU_hot= 3.65E-04; %viscosity hot Pa*s
PM= 0.018; % KG/mol water
R= 8.314; %universal constant Pa*m^3/(mol*k)
Kw= 0.63; %conductivity water W/mK
Kair= 0.03; %conductivity air W/mK
D12= 2.20E-05; %diffusivity water-air m^2/s
PR_hot= CP_w*MU_hot/Kw; %prandtl hot channel
PR_cold= CP_w*MU_cold/Kw; %prandtl cold channel
%boundary condition
Mhot_in= 0.02 ; %Feed mass in kg/s
Thot_in= 323.2 ; %Feed temperature in K
Mcold_in= 0.02 ; %Coolant mass in kg/s
Tcold_in= 291.1 ; %Coolant temperature in K
%v_hot=Mhot_in/(Apax*1000); %speed hot feed
%resolution
x0=[310 300 315 312 311 295]; %[310 300 315 312 311 295]
options=optimset('Display','iter')
[x,fval,exit,output]=fsolve(@equations,x0,options)
equations_guess=equations(x0)
function F=equations(x)
%J=x(1); %heat flux W/m^2
Thot_out= x(1); %Feed temperature out K
Tcold_out= x(2); %Coolant temperature out K
Thot_membrane= x(3); %temperature on the membrane hot side K
Tcold_membrane= x(4); %temperature on the membrane permeate side K
Thot_coolingplate= x(5); %temperature on cooling plate hot K
Tcold_coolingplate= x(6); %temperature on cooling plate cold K
Tav_hot= (Thot_in-Thot_out)/2; %temperature avarage in-out hot K
Tav_cold= (Tcold_out-Tcold_in)/2; %temperature avarage in-out cold K
Tav_m= (Thot_membrane-Tcold_membrane)/2; %temperature avarage membrane K
Psat_hot=133.3*10^(A-(B/(C+Thot_membrane-273))); %saturation pressure

Psat_cold=133.3*10^(A-(B/(C+Tcold_membrane-273))); %saturation pressure
hmembrane=1/dhelta2*(epsilon*Kair+(1-epsilon)*Km); %membrane transfer heat coefficent
Pair_Hot_membrane= Patm-Psat_hot;
Pair_Cold_membrane= Patm-Psat_cold;
Pair_ml=(Pair_Hot_membrane-Pair_Cold_membrane)/log(Pair_Hot_membrane/Pair_Cold_membrane);
Dknudsen=K0*(8*R*Tav_m/(pi*PM))^(1/2); %knudsen diffusivity
Dstagnant=D12*Patm/Pair_ml; %stagnant diffusivity
Koverall=1/(R*Tav_m)*(1/((1/Dknudsen+1/Dstagnant))); %membrane transfer mass coefficent
Nd=Koverall/dhelta2*(Psat_hot-Psat_cold); %distillate flux mol/m^2*s
Nd_l=Nd*PM; %distillate flux l/m^2*s o kg/m^2*s
Mhot_out= Mhot_in-Nd_l*Am; %mass hot out kg/s
Mav_hot= (Mhot_in-Mhot_out)/2; %mass avarage hot kg/s
Re_hot=Mav_hot*Deq/(Apax*MU_hot); %Reinolds hot channel
Re_cold=Mcold_in*Deq/(Apax*MU_cold); %Reinolds cold channel
h_hot=((8.4577*(Re_hot^0.1652)+0.7214*(Re_hot^0.5155))/2)*Kw/Deq; %transfer heat coeffcient hot W/m^2K
h_cold=((8.4577*(Re_cold^0.1652)+0.7214*(Re_cold^0.5155))/2)*Kw/Deq; %transfer heat coeffcient cold W/m^2K
F(1)=h_hot*(Tav_hot-Thot_membrane)-((Thot_in-Thot_out)*Mav_hot*CP_w)/Am;
F(2)=h_hot*(Tav_hot-Thot_membrane)-(lambda*Nd_l+hmembrane*(Thot_membrane-Tcold_membrane));
F(3)=(lambda*Nd_l+hmembrane*(Thot_membrane-Tcold_membrane))-Kw/dhelta3*(Tcold_membrane-Thot_coolingplate);
F(4)=Kw/dhelta3*(Tcold_membrane-Thot_coolingplate)-Kp/dhelta4*(Thot_coolingplate-Tcold_coolingplate);
F(5)=Kp/dhelta4*(Thot_coolingplate-Tcold_coolingplate)-h_cold*(Tcold_coolingplate-Tav_cold);
F(6)=h_cold*(Tcold_coolingplate-Tav_cold)-CP_w*Mcold_in*(Tcold_out-Tcold_in)/Am;
end
save
end

Best Answer

Your Thot_membrane is becoming less than your Tcold_membrane which gives a negative Tav_m which leads to
Dknudsen=K0*(8*R*Tav_m/(pi*PM))^(1/2)
taking the square root of a negative number.
Related Question