# commons-user mailing list archives

##### Site index · List index
Message view
Top
From South Light <southligh...@gmail.com>
Subject Re: [math] Curve fitting ...
Date Thu, 14 Aug 2014 17:05:58 GMT
```Hi Thomas,

My problem is to find the best A value in y = 10 ^ ((x + 82) / (-10 * A))
that fits better in a set of data. I'll be getting different sets of data.

I'm new in the use of the math lib and the examples found are all based
on deprecated classes.

Now I'm a little lost in terms of which class will be better to solve the
problem, was thinking CurveFitter was the way to go.

Can someone help me and clear my ideas ?

Many thanks for all your feedback.

Thanks a lot
.

2014-08-14 13:47 GMT-03:00 Thomas Vandahl <tv@apache.org>:

> I take it, you ask for help for doing your homework?
>
> Bye, Thomas
>
> > Am 14.08.2014 um 15:56 schrieb South Light <southlight25@gmail.com>:
> >
> > Hi Ted,
> >
> > Thanks a lot for your suggestion but I need to add it using java.
> >
> > Thanks
> > ​again​
> > .​
> >
> >
> >
> > 2014-08-14 2:22 GMT-03:00 Ted Dunning <ted.dunning@gmail.com>:
> >
> >> Have you considered using an interactive system like R, Matlab or
> Octave?
> >>
> >> You might be happier.
> >>
> >> Or even have you considered goal search in Excel?
> >>
> >>
> >>
> >>
> >> On Wed, Aug 13, 2014 at 6:08 PM, South Light <southlight25@gmail.com>
> >> wrote:
> >>
> >>> Hi,
> >>>
> >>> May be someone can help me with this problem.
> >>>
> >>> Given the follow function: y = 10 ^ ((x + 82) / (-10 * A))
> >>>
> >>> I would like to found the A value witch curve fit better for a set of
> x,y
> >>> values, usually the set is about 20 to 25 x,y values.
> >>>
> >>> I use the CurveFitter class and the ParametricUnivariateFunction
> >>>
> >>>
> >>> ParametricUnivariateFunction function = new
> >> ParametricUnivariateFunction()
> >>> {
> >>>
> >>> ​  ​
> >>> @Override
> >>> ​  ​
> >>> public double[] gradient(double x, double[] params) {
> >>> ​
> >>> (????? comment)
> >>> ​  ​
> >>> }
> >>>
> >>> ​  ​
> >>> @Override
> >>> ​  ​
> >>> public double value(double x, double[] params) {
> >>>
> >>> ​    ​
> >>> double a = params[0];
> >>>
> >>> ​    ​
> >>> return Math.pow(10, ((x + 82) /
> >>> ​(​
> >>> -10 *
> >>> ​a
> >>> ​)​
> >>> ));
> >>>
> >>> ​  ​
> >>> }
> >>>
> >>> };
> >>>
> >>> LevenbergMarquardtOptimizer optimizer = new
> >> LevenbergMarquardtOptimizer();
> >>>
> >>> CurveFitter<ParametricUnivariateFunction> fitter = new
> >>> CurveFitter<ParametricUnivariateFunction>(optimizer);
> >>>
> >>> double[] x = {
> >>> -82
> >>> ,
> >>> ​-85
> >>> ,
> >>> ​-89
> >>> };
> >>>
> >>> double[] y = {
> >>> ​1
> >>> ,
> >>> ​1.4
> >>> ,
> >>> ​2
> >>> };
> >>>
> >>> for (int i = 0; i < x.length; i++)
> >>> ​  ​
> >>>
> >>> double[] result = fitter.fit(function, new double[] { 1, 10 });
> >>>
> >>>
> >>>
> >>> ​A. ​Is this the best way to solve the problem or there's another
> better
> >>> way?
> >>>
> >>> B. What do we need to write on the gradient area (????? comment) ?​
> >>>
> >>> Any help will be more then welcome.
> >>>
> >>> Many thanks !!
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

```
Mime
• Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message