Intel® oneAPI Math Kernel Library Developer Reference - C
Solves a nonlinear least squares problem using the TR algorithm.
MKL_INT strnlsp_solve (_TRNSP_HANDLE_t* handle, float* fvec, float* fjac, MKL_INT* RCI_Request);
MKL_INT dtrnlsp_solve (_TRNSP_HANDLE_t* handle, double* fvec, double* fjac, MKL_INT* RCI_Request);
The ?trnlsp_solve routine uses the TR algorithm to solve nonlinear least squares problems.
The problem is stated as follows:
where
F(x):Rn → Rm
m ≥ n
to get xnew = xcurrent + s that satisfies
where
J(x) is the Jacobian matrix
s is the trial step
||s||2 ≤ Δcurrent
Δ is the trust-region area.
The RCI_Request parameter provides additional information:
RCI_Request Value |
Description |
---|---|
2 |
Request to calculate the Jacobian matrix and put the result into fjac |
1 |
Request to recalculate the function at vector X and put the result into fvec |
0 |
One successful iteration step on the current trust-region radius (that does not mean that the value of x has changed) |
-1 |
The algorithm has exceeded the maximum number of iterations |
-2 |
Δ < eps[0] |
-3 |
||F(x)||2 < eps[1] |
-4 |
The Jacobian matrix is singular. ||J(x)[m*(j-1)...m*j-1]||2 < eps[2], j = 1, ..., n |
-5 |
||s||2 < eps[3] |
-6 |
||F(x)||2 - ||F(x) - J(x)s||2 < eps[4] |
If it is possible to combine computations of the function and the jacobian (RCI_Request = 1 and 2), you can do that and provide both updated values for fvec and fjac as fulfillment of RCI_Request =1 (and do nothing for RCI_Request = 2).
Type _TRNSP_HANDLE_t.
Array of size m. Contains the function values at X, where fvec[i] = (yi – fi(x)).
Array of size m by n. Contains the Jacobian matrix of the function.
Array of size m. Updated function evaluated at x.
Informs about the task stage.
See the Description section for the parameter values and their meaning.
Indicates the task completion.
res = TR_SUCCESS - the routine completed the task normally.
TR_SUCCESS is defined in the mkl_rci.h include file.