commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
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++)
>>> ​  ​
>>> fitter.addObservedPoint(x[i], y[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