/** * Function that evaluates the whole function at a single point * * @param position The value to evaluate the function at * @return A double containing the evaluated value. */ @Override public double val(double... position) { // Check x and a size for correctness double y = 0.; // Just sum over the individual functions for (AFunction f : functionList) y += f.val(position); return y; }
@Test public void testFunction() { AFunction f = new StraightLine(); Assert.assertEquals(2, f.getNoOfParameters()); f.setParameterValues(23., -10.); Assert.assertArrayEquals(new double[] {23., -10.}, f.getParameterValues(), ABS_TOL); Assert.assertEquals(23. - 10., f.val(1), ABS_TOL); DoubleDataset xd = new DoubleDataset(new double[] {-1, 0, 2}); DoubleDataset dx; dx = f.calculateValues(xd); Assert.assertArrayEquals(new double[] {-23. - 10, -10, 23. * 2 - 10.}, dx.getData(), ABS_TOL); dx = f.calculatePartialDerivativeValues(f.getParameter(0), xd); Assert.assertArrayEquals(new double[] {-1, 0, 2}, dx.getData(), ABS_TOL); dx = f.calculatePartialDerivativeValues(f.getParameter(1), xd); Assert.assertArrayEquals(new double[] {1, 1, 1}, dx.getData(), ABS_TOL); Assert.assertEquals(-1, f.partialDeriv(f.getParameter(0), -1), ABS_TOL); Assert.assertEquals(1, f.partialDeriv(f.getParameter(1), -1), ABS_TOL); }