/root

root-finding algorithm

Primary LanguageGoMIT LicenseMIT

root

root-finding algorithm

package root // import "."

const (
	// Precision of rott-finding
	Precision float64 = 1e-6

	// MaxIteration is max allowable amount of iteration.
	// Typically for precition=1e-6 need 20 iterations.
	//
	// Example:
	//
	//	go test -v -run="Test/Case_26"
	//
	//	It.  X value         Y value         Xerror
	//  0    5.000000e-01    5.714286e-03    1.000000e+00
	//  1    7.500000e-01    2.142857e-03    5.000000e-01
	//  2    8.750000e-01    3.571429e-04    2.500000e-01
	//  3    9.375000e-01   -5.357143e-04    1.250000e-01
	//  4    9.062500e-01   -8.928571e-05    6.666667e-02
	//  5    8.906250e-01    1.339286e-04    3.448276e-02
	//  6    8.984375e-01    2.232143e-05    1.724138e-02
	//  7    9.023438e-01   -3.348214e-05    8.620690e-03
	//  8    9.003906e-01   -5.580357e-06    4.329004e-03
	//  9    8.994141e-01    8.370536e-06    2.169197e-03
	// 10    8.999023e-01    1.395089e-06    1.084599e-03
	// 11    9.001465e-01   -2.092634e-06    5.422993e-04
	// 12    9.000244e-01   -3.487723e-07    2.712232e-04
	// 13    8.999634e-01    5.231585e-07    1.356300e-04
	// 14    8.999939e-01    8.719308e-08    6.781500e-05
	// 15    9.000092e-01   -1.307896e-07    3.390750e-05
	// 16    9.000015e-01   -2.179827e-08    1.695404e-05
	// 17    8.999977e-01    3.269741e-08    8.477091e-06
	// 18    8.999996e-01    5.449568e-09    4.238545e-06
	// 19    9.000006e-01   -8.174351e-09    2.119273e-06
	// 20    9.000001e-01   -1.362392e-09    1.059637e-06
	MaxIteration int = 500
)
    Constants


func Find(f func(float64) (float64, error), minX, maxX float64) (root float64, err error)
    Find In mathematics, the bisection method is a root-finding method that
    applies to any continuous functions for which one knows two values with
    opposite signs. The method consists of repeatedly bisecting the interval
    defined by these values and then selecting the subinterval in which the
    function changes sign, and therefore must contain a root.

    Documentation: https://en.wikipedia.org/wiki/Bisection_method

        Input data:
        	f    - function of variable X for root-finding
        	minX - minimal X
        	maxX - maximal X
        Output data:
        	root - root of function
        	err  - error if some is not ok

    Notes:

        * Concurrency acceptable
        * Panic-free function

    Last operation of finding is run function.