why the solution obtained from fsolve changes when i change the initial guess?

조회 수: 8 (최근 30일)
I am trying to solve a system of two nonlinear equations. the solution Did not converge to the values i have expected and it changes when i change the initial guess. the m-file i have used is the following:
global Q C T_u D_T lewis E a Da_v teta_v Y_fu R
Q=55700;
C=1.423512;
D_T=9.0697e7;
ro_u=1.135e-18;
B=3.5e6;
E=96.2964;
R=8.314e-3;
a=10;
lewis=1;
T_u=300;
Da_v=1;
teta_v=0.2;
phi_u=1;
Y_fu=(phi_u/(phi_u+17.18));
p_m_c=Y_fu*ro_u*10^21;
x0=[1400; 8e4];
options=optimset('Display','iter','TolX',1e-12);
x=fsolve(@two_eq_ghadimi,x0,options);
Y_FC=(C*(x(1)-T_u)/Q)
x_star=(1/(a*(D_T/x(2)^2)))
T_f=x(1)
S_L=x(2)
---------------------------------------------------------------------------
function f=two_eq_ghadimi(x)
global Q C T_u D_T B lewis E R a Da_v teta_v Y_fu
epsil=(R*(x(1))^2)/(E*(x(1)-T_u));
x_v=(sqrt(2*x(2)^2/(a*D_T)))*erfinv(1-(1-erf(real(x(2)/sqrt(2*a*D_T))))*teta_v);
kasr1=((x(2)^2+a*D_T*Da_v)/(2*a*D_T*Da_v));
kasr2=((x(2)^2-a*D_T*Da_v)/(2*a*D_T*Da_v));
kasr3=(x(2)^2/(a*D_T*Da_v));
kasr4=(a*D_T*(x_v)^2)/(2*x(2)^2);
kasr5=((x(2))^2)/(2*a*D_T);
gam1=(gammainc(real(-lewis*kasr5),real(kasr1),'upper'))*gamma(real(kasr1));
gam2=(gammainc(real(-lewis*kasr4),real(kasr1),'upper'))*gamma(real(kasr1));
omega=((sqrt(2*a*D_T/pi))*exp(-kasr5))/(x(2)*(1-erf(real(x(2)/sqrt(2*a*D_T)))));
f=[(x(2))^2-(2*D_T/(omega^2))*(epsil^2)*B*lewis*exp(-E/(R*x(1)));
-omega+(1/lewis)*(((2/lewis)^kasr2*Y_fu)/((-a*D_T/(x(2)^2))^kasr1*Da_v*(C*(x(1)-T_u)/Q)*x_v^kasr3))*(gam1-gam2)*exp(-lewis*kasr5)];
end
how can i fix that? thank you

채택된 답변

Matt J
Matt J 2013년 7월 10일
편집: Matt J 2013년 7월 10일
Apparently, your equations have multiple solutions and FSOLVE likely finds the one closest to your initial guess.
  댓글 수: 1
Matt J
Matt J 2013년 7월 10일
If you call fsolve with two outputs
[x,fval] = fsolve(fun,x0)
you can see if fval is close to zero. If so, it tells you you are getting legitimate solutions.

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

추가 답변 (1개)

davood
davood 2013년 7월 11일
thank you

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by