# commons-user mailing list archives

##### Site index · List index
Message view
Top
From Thomas Vandahl ...@apache.org>
Subject Re: [math] Curve fitting ...
Date Thu, 14 Aug 2014 16:47:24 GMT
```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
View raw message