x=solveIt();
Optimization stopped because the norm of the current step, 4.873213e-13,
is less than options.StepTolerance = 1.000000e-12.
Solution:
8.4458 0.0000 0.4835 0.0944 0.0000
Inital and Final Resnorms:
101.3033 27.5020
Exit flag:
2
E_g = 1.16 - 7.02e-4*(T_cell^2/(T_cell-1108));
V_oc_T = V_oc_ref + beta*((T_cell+15)-T_ref);
x0 = [8.487 6.330e-9 1.149 5.837 5.125e-3];
options = optimoptions('lsqnonlin', 'Display','off','MaxIter',1,'DiffMaxChange',1e-10);
[~,~,~,~,~,~,jacobian] = lsqnonlin(fun, x0, [],[], options);
s=full(max(abs(jacobian)));
options.MaxIterations=2000;
options.FunctionTolerance=1e-12;
options.StepTolerance=1e-12;
options.OptimalityTolerance=1e-12;
options.Display='final-detailed';
resnorm0=norm(fun(x0.*s)).^2;
[z,resnorm,~,exitflag] = lsqnonlin(fun, x0.*s,[-inf,-inf,0,0,0],[], options);
fprintf('Inital and Final Resnorms:\n');
disp([resnorm0, resnorm]);
I_irr = x(1)*(G/G_ref)*(1 + alpha*(T_cell));
I_o = x(2)*(T_cell/T_ref)^3*exp((E_g_ref/(k*T_ref)) - (E_g/(k*T_cell)));
T3 = V_mp_ref + (I_mp_ref*NsNp*x(5));
X1 = ((q*Np*x(2))/(Ns*x(3)*k*T_ref))*exp((q*T3)/T1) + 1/(NsNp*x(4));
X2 = 1 + ((q*x(2)*x(5))/(x(3)*k*T_ref))*exp((q*T3)/T1) + x(5)/x(4);
F(1) = Np*x(1) - Np*x(2)*(exp((q*V_oc_ref)/T1)-1) - V_oc_ref/(NsNp*x(4));
F(2) = Np*x(1) - Np*x(2)*(exp((q*I_sc_ref*x(5))/T2)-1) - (I_sc_ref*NsNp*x(5))/(NsNp*x(4)) - I_sc_ref;
F(3) = Np*x(1) - Np*x(2)*(exp((q*T3)/T1)-1) - T3/(NsNp*x(4)) - I_mp_ref;
F(4) = X1/X2 - I_mp_ref/V_mp_ref;
F(5) = Np*I_irr - Np*I_o*exp(((q*V_oc_T)/(Ns*n*k*T_cell))-1) - V_oc_T/(NsNp*Rp);