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