コード例 #1
0
        private void testJacobian(DoubleArray x)
        {
            int n = x.size();

            System.Func <DoubleArray, DoubleArray>  func    = _fitter.ModelValueFunction;
            System.Func <DoubleArray, DoubleMatrix> jacFunc = _fitter.ModelJacobianFunction;
            VectorFieldFirstOrderDifferentiator     differ  = new VectorFieldFirstOrderDifferentiator();

            System.Func <DoubleArray, DoubleMatrix> jacFuncFD = differ.differentiate(func);
            DoubleMatrix jac   = jacFunc(x);
            DoubleMatrix jacFD = jacFuncFD(x);
            int          rows  = jacFD.rowCount();
            int          cols  = jacFD.columnCount();

            assertEquals(_cleanVols.Length, rows);
            assertEquals(n, cols);
            assertEquals(rows, jac.rowCount());
            assertEquals(cols, jac.columnCount());
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    assertEquals(jacFD.get(i, j), jac.get(i, j), 2e-2);
                }
            }
        }
コード例 #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testNonLinearTransform()
        public virtual void testNonLinearTransform()
        {
            BitArray    @fixed = new BitArray();
            DoubleArray start  = DoubleArray.filled(2);
            UncoupledParameterTransforms transforms = new UncoupledParameterTransforms(start, TRANSFORMS, @fixed);
            NonLinearTransformFunction   transFunc  = new NonLinearTransformFunction(FUNCTION, JACOBIAN, transforms);

            System.Func <DoubleArray, DoubleArray>  func    = transFunc.FittingFunction;
            System.Func <DoubleArray, DoubleMatrix> jacFunc = transFunc.FittingJacobian;

            VectorFieldFirstOrderDifferentiator diff = new VectorFieldFirstOrderDifferentiator();

            System.Func <DoubleArray, DoubleMatrix> jacFuncFD = diff.differentiate(func);

            DoubleArray  testPoint = DoubleArray.of(4.5, -2.1);
            DoubleMatrix jac       = jacFunc(testPoint);
            DoubleMatrix jacFD     = jacFuncFD(testPoint);

            assertEquals(3, jac.rowCount());
            assertEquals(2, jac.columnCount());

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    assertEquals(jacFD.get(i, j), jac.get(i, j), 1e-6);
                }
            }
        }
コード例 #3
0
        public virtual DoubleArray findRoot(System.Func <DoubleArray, DoubleArray> function, DoubleArray startPosition)
        {
            VectorFieldFirstOrderDifferentiator jac = new VectorFieldFirstOrderDifferentiator();

            return(findRoot(function, jac.differentiate(function), startPosition));
        }
コード例 #4
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Create an instance of the finite difference calculator.
 /// </summary>
 /// <param name="fdType">  the finite difference type </param>
 /// <param name="shift">  the shift to be applied to the curves </param>
 private CurveGammaCalculator(FiniteDifferenceType fdType, double shift)
 {
     this.fd = new VectorFieldFirstOrderDifferentiator(fdType, shift);
 }