|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.lgc.wsh.opt.TransformQuadratic
public class TransformQuadratic
For a linearized transform, implement the Gauss-Newton quadratic approximation of a damped least-squares objective function. Specifically,
[f(m+x)-data]'N[f(m+x)-data] + (m+x)'M(m+x)
Linearization of
f(m+x) ~= f(m) + Fx
makes the function quadratic in x
[f(m)+Fx-data]'N[f(m)+Fx-data] + (m+x)'M(m+x)
If only perturbations are damped, then the objective function is
[f(m)+Fx-data]'N[f(m)+Fx-data] + x'Mx
m is the reference model, and x is the perturbation.
f(m) is the nonlinear forward transform.
F is the linearized version of f(m) with respect to the
reference model m
N is the inverse covariance of the data and
M is the inverse covariance of the model.
The Hessian is given by
H = F'NF + M
.
b is determined by
b = -F' N [data - f(m)] + Mm
for full damping, or by
b = -F' N [data - f(m)]
if only perturbations are damped.
| Constructor Summary | |
|---|---|
TransformQuadratic(VectConst data,
VectConst referenceModel,
VectConst perturbModel,
Transform transform,
boolean dampOnlyPerturbation)
Wrap known data, reference mode, and transform as a Gauss-Newton objectiveFunction. |
|
| Method Summary | |
|---|---|
void |
dispose()
Free up internal cached vectors |
double |
evalFullObjectiveFunction(VectConst m)
Evaluate the full objective function without approximation. |
Vect |
getB()
Return gradient term of quadratic. |
int |
getTransposePrecision()
Run a few tests to ensure that transpose satisfies definition. |
void |
inverseHessian(Vect x)
Multiply vector by an approximate inverse of the Hessian. |
void |
multiplyHessian(Vect x)
Multiply by Hessian H = F'NF + M |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public TransformQuadratic(VectConst data,
VectConst referenceModel,
VectConst perturbModel,
Transform transform,
boolean dampOnlyPerturbation)
referenceModel - This is the reference model
m in the objective function.perturbModel - If non-null, then use instances
of this vector to perturb the reference model.
It must be possible to project the referenceModel
and perturbModel into each other.data - The data to be fit.transform - Optimize with this transformdampOnlyPerturbation - If true then use objective function
[f(m)+Fx-data]'N[f(m)+Fx-data] + x'Mx | Method Detail |
|---|
public int getTransposePrecision()
public void multiplyHessian(Vect x)
H = F'NF + M
multiplyHessian in interface Quadraticx - Vector to be multiplied and modifiedpublic void inverseHessian(Vect x)
Quadratic
inverseHessian in interface Quadraticx - Vector to be multiplied and modified.public Vect getB()
getB in interface Quadratic b = -F' N [data - f(m)] + Mm
if dampOnlyPerturbation is false, and
b = -F' N [data - f(m)] if dampOnlyPerturbation is true.public double evalFullObjectiveFunction(VectConst m)
[f(m)-data]'N[f(m)-data] + (m-m0)'M(m-m0)
where m0 is the reference model.
Otherwise evaluates
[f(m)-data]'N[f(m)-data] + m'M m
m - Model to be evaluated.
public void dispose()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||