Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: CDF limitations and unclear professional strategy
  • Next by Date: Re: Inverse of Interpolating Function?
  • Previous by thread: Re: CDF limitations and unclear professional strategy
  • Next by thread: IMS 2012