I fit the experimental curve with the model using the following equation,
i[V_,a_,b_, eo_] := Module[{c, T},
c = 0; (* in electronvolt *)
T = 300; (* in Kelvin *)
Return[N[NIntegrate[
(4*a*b)/((e - eo)^2 + (a + b)^2)*(f[e - V/2, T, c] - f[e + V/2, T, c]),
{e, -∞, ∞}]]]
where
f[e_, T_, c] := 1/(Exp[(e - c)/(8.617*10^-5*T)] + 1)
Here the free parameters are a, b, e0.
fit =
FindFit[
data[[1, 2 ;;, {1, 2}]],
{i[V, p, k, eo], {-0.5 < p < 0.5, -0.5 < k < 0.5, 0 < eo < 0.9}},
{{p, 0.019}, {k, 0.019}, {eo, 0.65}}, V]
When I use Findfit, it displays the error message:
The integrand has evaluated to non-numerical values for all sampling points in the region with boundaries {{-∞, 0.}}.
At the end, the fit displays the value for a, b, c always nearby the starting value. Could anyone suggest a solution for this?





Return[N[NIntegrate[...]]]relates to your modeli[V, p, k, eo]. Please edit your question to show how you used the results ofIntegrateto definei. – m_goldberg Oct 08 '15 at 11:53