Iterative procedures are many times very sensitive to starting values. Sometimes one has to be very close to the correct estimates and sometime one just needs to start with the right sign. My guess that NonlinearModelFit
uses 1 as the starting value for all parameters. If one uses -1 for the starting value for d
, a good fit results.
Z = NonlinearModelFit[data, Ic, {x, { d, -1}, j}, T];
Z["BestFitParameters"]
Z["BestFit"]
Show[Plot[Z[T], {T, 4, 300}, PlotRange -> All], ListPlot[data] ]
