I have written a code like follows:
TD1 = 200
Debye1[T_] := 3 (T/TD1)^3 NIntegrate[y^3/(Exp[y] - 1), {y, 0, TD1/T}]
Fa1[T_] := 8.6173324*10^(-5) T (9 *TD1/(8 T) +
3 Log[1 - Exp[-TD1/T]] - Debye1[T])
TD2 = 300
Debye2[T_] := 3 (T/TD2)^3 NIntegrate[y^3/(Exp[y] - 1), {y, 0, TD2/T}]
Fa2[T_] := 8.6173324*10^(-5) T (9 *TD2/(8 T) +
3 Log[1 - Exp[-TD2/T]] - Debye2[T])
DF[T_] := Fa2[T] - Fa1[T] + 0.037
Plot[DF[T], {T, 0, 500}, PlotStyle -> Green]
Upto this it works. But I am interested in the intersection point. So then I used the following:
Solve[DF[T]==0,T]
I am expecting something around ~100. Why am I not getting this? Is it something wrong with the Solve syntax?
The error I am getting like this:
NIntegrate::nlim: "y = 300./T is not a valid limit of integration."
General::stop: "Further output of NIntegrate::nlim will be suppressed during this calculation"
Solve::inex: Solve was unable to solve the system with inexact coefficients or the system obtained by direct rationalization of inexact numbers present in the system. Since many of the methods used by Solve require exact input, providing Solve with an exact version of the system may help.
Since I am quite new in Mathematica, any suggestion would be great help.




FindRoot[]instead ofSolve[]. Note that the Debye function can be represented in terms of special functions known to Mathematica, so theNIntegrate[]is not really needed here. – J. M.'s missing motivation Feb 16 '16 at 19:24FindRoot[]. – J. M.'s missing motivation Feb 16 '16 at 19:32If I use this: FindRoot[DF[T] == 0, T] then it shows: FindRoot::fdss: Search specification T should be a list with 1 to 5 elements.
– baban Feb 16 '16 at 19:350is quite far away from100, so I'm not surprised. TryFindRoot[DF[T] == 0, {T, 100}]. – J. M.'s missing motivation Feb 16 '16 at 19:39}" NIntegrate::vars: Integration range specification Compile$54 is not of the form {x, xmin, ..., xmax}. – baban Feb 16 '16 at 19:45Plot[DF[T], {T, 0, 500}, PlotStyle -> Green, PlotRange -> {{0, 0.1}}]– Mr.Wizard Feb 16 '16 at 23:30