Phase Diagrams and problem probably with NIntegrate (or FindRoot)
- To: mathgroup at smc.vnet.net
- Subject: [mg120405] Phase Diagrams and problem probably with NIntegrate (or FindRoot)
- From: Arturo Amador <amador at tf.phys.ntnu.no>
- Date: Thu, 21 Jul 2011 21:05:49 -0400 (EDT)
Hi,
I am trying to make some phase diagrams on Mathematica. I have the
following code:
(*Free parameters*)n=4
start=150.
(*Experimental quantities (MeV)*)
mpi=139.
msi=600.
fpi=93.
(*Renormalisation scale*)
scale=mpi Sqrt[n]
(*Dimensionless auxiliary function*)
Jint[x_,y_]:=y^2/Sqrt[x^2+y^2]/(Exp[Sqrt[x^2+y^2]]-1)
J[x_]:=NIntegrate[Jint[x,y],{y,0,Infinity}]
(*Sum-integral*)
qT[m_,t_]:=t^2 J[m/t]/(2 Pi^2)
qT[m_,0.]:=0.
p0[m_]:=m^2 Log[m^2/scale^2]/(16 Pi^2)
p0[0.]:=0.
p[m_,t_]:=p0[m]+qT[m,t]
(*Physical point*)
lp=n (msi^2-mpi^2)/fpi^2
fp=fpi^2 (msi^2-3 mpi^2)/(msi^2-mpi^2)/n
hp=mpi^2 fpi/Sqrt[n]
(*Chiral limit*)
lc=n msi^2/fpi^2
fc=fpi^2/n
(*Pion condensate (squared)*)
rhop[mui_,t_]:=fp-hp^2/mui^4+2 mui^2/lp-p0[mui]-qT[mui,t]
rhoc[mui_,t_]:=fc+2 mui^2/lc-p[mui,t]
(*Normalised plot of chiral condensate at mu_I0 MeV*)
rnp=Sqrt[rhop[200.,0.]]
rnc=Sqrt[rhoc[200.,0.]]
rhoplot:=Plot[{Sqrt[rhop[200.,t]]/rnp,Sqrt[rhoc[200.,t]]/rnc},{t,0.,300.},PlotRange->All,AxesOrigin->{0.,0.}]
(*Critical temperature and phase diagram*)
tcp[mui_]:=FindRoot[rhop[mui,t],{t,start}][[1]][[2]]
tcc[mui_]:=FindRoot[rhoc[mui,t],{t,start}][[1]][[2]]
phaseplot:=Plot[{tcp[mui],tcc[mui]},{mui,0.01,300.},PlotRange->All,AxesOrigin->{0.,0.}]
Grid[rhoplot,phaseplot]
It is supposed to give me a pair of plots but I am only getting one and
some error messages for the second one (phaseplot). The error that
Mathematica gives in the terminal says as follows:
NIntegrate::inumr:
2
y
The integrand --------------------------------------------------------
2 2
Sqrt[0.000260124/t + y ] 0.000260124 2
(-1 + E ) Sqrt[----------- + y ]
2
t
has evaluated to non-numerical values for all sampling points in the
region with boundaries {{Infinity, 0.}}.
NIntegrate::inumr:
2
y
The integrand --------------------------------------------------------
2 2
Sqrt[0.000260124/t + y ] 0.000260124 2
(-1 + E ) Sqrt[----------- + y ]
2
t
has evaluated to non-numerical values for all sampling points in the
region with boundaries {{Infinity, 0.}}.
NIntegrate::inumr:
2
y
The integrand --------------------------------------------------------
2 2
Sqrt[0.000260124/t + y ] 0.000260124 2
(-1 + E ) Sqrt[----------- + y ]
2
t
has evaluated to non-numerical values for all sampling points in the
region with boundaries {{Infinity, 0.}}.
General::stop: Further output of NIntegrate::inumr
will be suppressed during this calculation.
FindRoot::lstol:
The line search decreased the step size to within tolerance specified
by
AccuracyGoal and PrecisionGoal but was unable to find a sufficient
decrease in the merit function. You may need more than
MachinePrecision
digits of working precision to meet these tolerances.
The error message that Mathematica gives in the front end is this:
NIntegrate::inumr: The integrand y^2/((-1+E^Sqrt[0.000260124
Power[<<2>>]+y^2]) Sqrt[0.000260124/t^2+y^2]) has evaluated to
non-numerical values for all sampling points in the region with boundaries
{{\[Infinity],0.}}. >>
NIntegrate::inumr: The integrand y^2/((-1+E^Sqrt[0.000260124
Power[<<2>>]+y^2]) Sqrt[0.000260124/t^2+y^2]) has evaluated to
non-numerical values for all sampling points in the region with boundaries
{{\[Infinity],0.}}. >>
NIntegrate::inumr: The integrand y^2/((-1+E^Sqrt[0.000260124
Power[<<2>>]+y^2]) Sqrt[0.000260124/t^2+y^2]) has evaluated to
non-numerical values for all sampling points in the region with boundaries
{{\[Infinity],0.}}. >>
General::stop: Further output of NIntegrate::inumr will be suppressed
during this calculation. >>
NIntegrate::vars: Integration range specification Compile`$19 is not of
the form {x, xmin, ..., xmax}. >>
NIntegrate::vars: Integration range specification Compile`$19 is not of
the form {x, xmin, ..., xmax}. >>
NIntegrate::vars: Integration range specification Compile`$19 is not of
the form {x, xmin, ..., xmax}. >>
General::stop: Further output of NIntegrate::vars will be suppressed
during this calculation. >>
FindRoot::njnum: The Jacobian is not a matrix of numbers at {t} = {150.}.
>>
FindRoot::njnum: The Jacobian is not a matrix of numbers at {t} = {150.}.
>>
When running this in the terminal it seems to keep working for a while,
but in the front end it just interrupts all further evaluation.
Any comment would be of great help.
Thanks,
--
Arturo