FindFit
FindFit(list-of-data-points, function, parameters, variable)
solve a least squares problem using the Levenberg-Marquardt algorithm.
See:
Examples
>> FindFit({{15.2,8.9},{31.1,9.9},{38.6,10.3},{52.2,10.7},{75.4,11.4}}, a*Log(b*x), {a, b}, x){a->1.54503,b->20.28258}
>> FindFit({{1,1},{2,4},{3,9},{4,16}}, a+b*x+c*x^2, {a, b, c}, x){a->0.0,b->0.0,c->1.0}
The default initial guess in the following example for the parameters {a,w,f}
is {1.0, 1.0, 1.0}
.
These initial values give a bad result:
>> FindFit(Table({t, 3*Sin(3*t + 1)}, {t, -3, 3, 0.1}), a* Sin(w*t + f), {a,w,f}, t){a->0.6688,w->1.49588,f->3.74845}
The initial guess {2.0, 1.0, 1.0}
gives a much better result:
>> FindFit(Table({t, 3*Sin(3*t + 1)}, {t, -3, 3, 0.1}), a* Sin(w*t + f), {{a, 2}, {w,1}, {f,1}}, t){a->3.0,w->3.0,f->1.0}
You can omit 1.0
in the parameter list because it’s the default value:
>> FindFit(Table({t, 3*Sin(3*t + 1)}, {t, -3, 3, 0.1}), a* Sin(w*t + f), {{a, 2}, w, f}, t){a->3.0,w->3.0,f->1.0}
Related terms
Fit, FittedModel, LinearModelFit
Implementation status
- ✅ - full supported