commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ted Dunning <ted.dunn...@gmail.com>
Subject Re: [math] Curve fitting ...
Date Thu, 14 Aug 2014 05:22:24 GMT
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 !!
>

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