commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christiaan <christiaan...@hotmail.com>
Subject [Math] Exponential curve fitting problem
Date Thu, 14 Oct 2010 16:16:18 GMT

Hi,
I am reposting this issue since the original one through nabble forums
somehow didn't get accepted, so I am hoping this one is;-) I am currently
evaluating whether commons Math can be used in our project for regression
analysis. Based on an earlier thread I've tried to apply natural exponential
curve fitting:
http://apache-commons.680414.n4.nabble.com/MATH-Need-help-on-math-libraries-for-curve-generation-td1050024.html#a1050024

The results are not really promising.  If I generate y values for this
function: 
y = 20 + 10*e^(2*x) 

the result is: 
y = 1.040425114042751E13 + 21.13 * e^(1.7x) 
RMS:2.895606396069334E25 

which isn't a good fit. Any ideas if and how this can be improved? 

initialGuess = new double[] {1,1,1}; 
Exp function is like this: 

 public class NaturalExp2D implements ParametricRealFunction { 

     @Override 
     public double value(double x, double[] coeffs) throws
FunctionEvaluationException { 
    double a = coeffs[0]; 
    double b = coeffs[1];   
    double c = coeffs[2]; 
    double value = a + b*Math.exp(c * x); 
    return value; 
     } 
      
     @Override 
     public double[] gradient(double x, double[] coeffs) throws
FunctionEvaluationException { 
    double[] gradient = new double[3]; 
    double a = coeffs[0]; 
    double b = coeffs[1];   
    double c = coeffs[2]; 
    gradient[0] = 1.0; // this is dy/da 
    final double exp = Math.exp(c * x); 
    gradient[1] = exp; // this is dy/db 
    gradient[2] = b * x * exp; // this is dy/dc 
    return gradient; 
     } 
} 

Generated data: 
point: 1.0 - 93.89056099 function: 1.0404251140543246E13 
point: 2.0 - 565.9815003 function: 1.0404251141061297E13 
point: 3.0 - 4054.287935 function: 1.0404251143898256E13 
point: 4.0 - 29829.57987 function: 1.0404251159434023E13 
point: 5.0 - 220284.6579 function: 1.040425124451111E13 
point: 6.0 - 1627567.914 function: 1.0404251710410879E13 
point: 7.0 - 1.202606284E7 function: 1.0404254261774613E13 
point: 8.0 - 8.886112521E7 function: 1.0404268233571447E13 
point: 9.0 - 6.565997114E8 function: 1.040434474602795E13 
point: 10.0 - 4.851651974E9 function: 1.040476374410452E13 
point: 11.0 - 3.5849128481E10 function: 1.0407058264450576E13 
point: 12.0 - 2.64891E11 function: 1.0419623533631664E13 
point: 13.0 - 1.9573E12 function: 1.0488433553061055E13 
point: 14.0 - 1.44626E13 function: 1.086525148713279E13 
point: 15.0 - 1.06865E14 function: 1.292878462686391E13 
point: 16.0 - 7.8963E14 function: 2.4229119971194812E13 
point: 17.0 - 5.83462E15 function: 8.611209942795956E13 
point: 18.0 - 4.31123E16 function: 4.249961262960237E14 
point: 19.0 - 3.18559E17 function: 2.2807953246289075E15 
point: 20.0 - 2.35385E18 function: 1.2443536532475274E16 
point: 21.0 - 1.73927E19 function: 6.8096814619047912E16 
point: 22.0 - 1.28516E20 function: 3.7286570506270682E17 
point: 23.0 - 9.49612E20 function: 2.04184334260224461E18 
point: 24.0 - 7.01674E21 function: 1.1181510946313906E19 
point: 25.0 - 5.18471E22 function: 6.123222584353946E19 
point: 26.0 - 3.83101E23 function: 3.353203185774627E20 
point: 27.0 - 2.83075E24 function: 1.8362835462312472E21 
point: 28.0 - 2.09166E25 function: 1.0055869403818766E22 
point: 29.0 - 1.54554E26 function: 5.506802588140335E22 

kind regards, 
Christiaan 
-- 
View this message in context: http://apache-commons.680414.n4.nabble.com/Math-Exponential-curve-fitting-problem-tp2995629p2995629.html
Sent from the Commons - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message