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

c05nb is an easy-to-use method to find a solution of a system of nonlinear equations by a modification of the Powell hybrid method.

Syntax

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

Parameters

fcn
Type: NagLibrary..::.C05..::.C05NB_FCN
fcn must return the values of the functions fi  at a point x.

A delegate of type C05NB_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.
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 .
c05nb is based on the MINPACK routine HYBRD1 (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 approximated by forward differences, but these are not used again 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, c05nb tries to ensure that
x-x^ xtol × x^ .
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 c05nb 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 are reasonably well behaved. If this condition is not satisfied, then c05nb may incorrectly indicate convergence. The validity of the answer can be checked, for example, by rerunning c05nb with a tighter tolerance.

Further Comments

Local workspace arrays of fixed lengths are allocated internally by c05nb. The total size of these arrays amounts to n×3×n+13/2 real elements.
The time required by c05nb 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 c05nb to process each call of fcn is about 11.5×n2 . Unless fcn can be evaluated quickly, the timing of c05nb 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