I have a list as below one:

 mustbefitted={{0., 1.}, {4.4, 0.982211}, {8.9, 0.961575}, {13.3, 0.942571}, {17.8, 0.923857}, {22.2, 0.906203}, {25.1, 0.046994}};

I wish to fit the list with a function as a - b t^c

NonlinearModelFit[mustbefitted, a - b t^c, {a, b, c}, t];

But unfortunately the above fitting command does not perform correctly and I could not understand the mean of the massage after running the function i.e., The Jacobian is not a matrix of real numbers at {a,b,c} = {1.,1.,1.}!!!

  • 2
    $\begingroup$ For reference, the message is "The Jacobian is not a matrix of real numbers at {a,b,c} = {1.,1.,1.}." Please add this type of information to your questions in future! $\endgroup$
    – Carl Lange
    Aug 12, 2019 at 17:51
  • 1
    $\begingroup$ Mind the capitalization NonlinearModelFit not NonLinearModelFit. $\endgroup$
    – rhermans
    Aug 12, 2019 at 17:54
  • $\begingroup$ Most of the issues stem from the first point: {0., 1.}, which represents an indeterminate value in your fit function. It does not look like a - b t^c is a particularly good fit for this data either. $\endgroup$
    – eyorble
    Aug 12, 2019 at 18:19

1 Answer 1


So I took a look at your data,



First I'd play with Manipulate to see if I can use the model I have and see if I can get anywhere close.

Manipulate[Plot[a - b t^c, {t, 0, 25.1}, ImageSize -> Large, Epilog -> Point[mustbefitted]], {a, 0.1, 5000000}, { b, -5, 5}, {c, -5, 50}]

doesnt look good

It doesn't look good....the only values b and c that will give us that sharp drop off you have are quite high and a doesn't affect on it anymore.

But the data looks like an extremely linear piecewise function.

data = {{0, 1}, {4.4, 0.982211}, {8.9, 0.961575}, {13.3, 0.942571}, {17.8, 0.923857}, {22.2, 0.906203}}

lm = LinearModelFit[data, x, x]
lm2 = LinearModelFit[{{22.2, 0.906203}, {25.1, 0.046994}}, x, x]

Have a look at the residuals...

ListPlot[lm["FitResiduals"], Filling -> Axis]
ListPlot[lm2["FitResiduals"], Filling -> Axis]

enter image description here

enter image description here

Looks pretty good!...your data is awfully linear, except for the last data point compared to the rest.

f[x_] := Piecewise[{{lm[x], x < 22.2}, {lm2[x], x >= 22.2}}]
Plot[f[x], {x, 0, 25.1}, Epilog -> {Red, Point[mustbefitted]}, PlotRange -> All]


Not sure this is exactly what you're looking for, but unless you can get a hand on more data points, or find a different model (the model you have doesn't seem to be the right one), there isn't much of a chance to get something better than this.

  • $\begingroup$ Thankx so much for your guide. Please let me check $\endgroup$ Aug 13, 2019 at 9:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.