public class LevenbergMarquardtMethod extends Object
Modifier and Type | Field and Description |
---|---|
private double[][] |
alpha
Working space for alphas
|
private double[] |
beta |
private double |
chisq
Chi-Squared information for parameters
|
private double[][] |
covmat
Working space for covariance matrix
|
private double[] |
deltaparams |
private boolean[] |
dofit
Which parameters to fit
|
FittingFunction |
func
Function to fit to
|
private double |
lambda
Lambda (refinement step size)
|
int |
maxruns
Maximum number of iterations in run()
|
int |
maxsmall
Maximum number of small improvements (stopping condition)
|
private int |
numfit
Number of parameters to fit
|
private int |
numparams
Number of parameters
|
private double[] |
params
Parameters to use in fitting
|
private double[] |
paramstry
More working buffers
|
private double[] |
s |
double |
small
"Small value" condition for stopping
|
private double[] |
x
Data to fit the function to
|
private double[] |
y |
Constructor and Description |
---|
LevenbergMarquardtMethod(FittingFunction func,
double[] params,
boolean[] dofit,
double[] x,
double[] y,
double[] s)
Function fitting using Levenberg-Marquardt Method.
|
Modifier and Type | Method and Description |
---|---|
double |
getChiSq()
Get current ChiSquared (squared error sum)
|
double[][] |
getCovmat()
Get the final covariance matrix.
|
double[] |
getParams()
Get current parameters.
|
void |
iterate()
Perform an iteration of the approximation loop.
|
void |
run()
Iterate until convergence, at most 100 times.
|
private double |
simulateParameters(double[] curparams)
Compute new chisquared error
This function also modifies the alpha and beta matrixes!
|
public FittingFunction func
private double[] x
private double[] y
private double[] s
private int numparams
private double[] params
private double chisq
private int numfit
private boolean[] dofit
private double[][] covmat
private double[][] alpha
private double lambda
private double[] paramstry
private double[] beta
private double[] deltaparams
public int maxruns
public int maxsmall
public double small
public LevenbergMarquardtMethod(FittingFunction func, double[] params, boolean[] dofit, double[] x, double[] y, double[] s)
func
- Function to fit tox
- Measurement pointsy
- Actual function valuess
- Confidence / Variance in measurement dataparams
- Initial parametersdofit
- Flags on which parameters to optimizeprivate double simulateParameters(double[] curparams)
curparams
- Parameters to use in computation.public void iterate()
public double[][] getCovmat()
public double[] getParams()
public double getChiSq()
public void run()