c05pb Method
関数リスト一覧   NagLibrary Namespaceへ  ライブラリイントロダクション  本ヘルプドキュメントのchm形式版

c05pb is an easy-to-use method to find a solution of a system of nonlinear equations by a modification of the Powell hybrid method. You must provide the Jacobian.

Syntax

C#
public static void c05pb(
	C05..::.C05PB_FCN fcn,
	int n,
	double[] x,
	double[] fvec,
	double[,] fjac,
	double xtol,
	out int ifail
)
Visual Basic (Declaration)
Public Shared Sub c05pb ( _
	fcn As C05..::.C05PB_FCN, _
	n As Integer, _
	x As Double(), _
	fvec As Double(), _
	fjac As Double(,), _
	xtol As Double, _
	<OutAttribute> ByRef ifail As Integer _
)
Visual C++
public:
static void c05pb(
	C05..::.C05PB_FCN^ fcn, 
	int n, 
	array<double>^ x, 
	array<double>^ fvec, 
	array<double,2>^ fjac, 
	double xtol, 
	[OutAttribute] int% ifail
)
F#
static member c05pb : 
        fcn:C05..::.C05PB_FCN * 
        n:int * 
        x:float[] * 
        fvec:float[] * 
        fjac:float[,] * 
        xtol:float * 
        ifail:int byref -> unit 

Parameters

fcn
Type: NagLibrary..::.C05..::.C05PB_FCN
Depending upon the value of iflag, fcn must either return the values of the functions fi  at a point x or return the Jacobian at x.

A delegate of type C05PB_FCN.

n
Type: System..::.Int32
On entry: n, the number of equations.
Constraint: n>0 .
x
Type: array< System..::.Double >[]()[]
An array of size [n]
On entry: an initial guess at the solution vector.
On exit: the final estimate of the solution vector.
fvec
Type: array< System..::.Double >[]()[]
An array of size [n]
On exit: the function values at the final point, x.
fjac
Type: array< System..::.Double ,2>[,](,)[,]
An array of size [ldfjac, n]
Note: ldfjac must satisfy the constraint: ldfjacn
On exit: the orthogonal matrix Q produced by the QR  factorization of the final approximate Jacobian.
xtol
Type: System..::.Double
On entry: the accuracy in x to which the solution is required.
Suggested value: the square root of the machine precision.
Constraint: xtol0.0 .
ifail
Type: System..::.Int32 %
On exit: ifail=0 unless the method detects an error (see [Error Indicators and Warnings]).

Description

The system of equations is defined as:
fi x1,x2,,xn = 0 ,   for ​ i= 1, 2, , n .
c05pb is based on the MINPACK routine HYBRJ1 (see Moré et al. (1980)). It chooses the correction at each step as a convex combination of the Newton and scaled gradient directions. Under reasonable conditions this guarantees global convergence for starting points far from the solution and a fast rate of convergence. The Jacobian is updated by the rank-1 method of Broyden. At the starting point the Jacobian is calculated, but it is not recalculated until the rank-1 method fails to produce satisfactory progress. For more details see Powell (1970).

References

Error Indicators and Warnings

Accuracy

If x^  is the true solution, c05pb tries to ensure that
x-x^ 2 xtol × x^ 2 .
If this condition is satisfied with xtol = 10-k , then the larger components of x have k significant decimal digits. There is a danger that the smaller components of x may have large relative errors, but the fast rate of convergence of c05pb usually avoids this possibility.
If xtol is less than machine precision and the above test is satisfied with the machine precision in place of xtol, then the method exits with ifail=3.
Note:  this convergence test is based purely on relative error, and may not indicate convergence if the solution is very close to the origin.
The test assumes that the functions and the Jacobian are coded consistently and that the functions are reasonably well behaved. If these conditions are not satisfied, then c05pb may incorrectly indicate convergence. The coding of the Jacobian can be checked using c05za. If the Jacobian is coded correctly, then the validity of the answer can be checked by rerunning c05pb with a tighter tolerance.

Further Comments

Local workspace arrays of fixed lengths are allocated internally by c05pb. The total size of these arrays amounts to n×n+13/2 real elements.
The time required by c05pb to solve a given problem depends on n, the behaviour of the functions, the accuracy requested and the starting point. The number of arithmetic operations executed by c05pb is about 11.5×n2  to process each evaluation of the functions and about 1.3×n3  to process each evaluation of the Jacobian. Unless fcn can be evaluated quickly, the timing of c05pb will be strongly influenced by the time spent in fcn.
Ideally the problem should be scaled so that, at the solution, the function values are of comparable magnitude.

Example

See Also