public void CanInterpolateFact() { var interp = new LinearInVarianceInterpolator(); interp = new LinearInVarianceInterpolator(new double[] { 0, 10, 20 }, new double[] { 10, 20, 30 }); Assert.Equal(20.0, interp.Interpolate(10)); var midPoint = ((20 * 20 * 10) + (30 * 30 * 20)) / 2.0; midPoint = System.Math.Sqrt(midPoint / 15); Assert.Equal(midPoint, interp.Interpolate(15)); Assert.Equal(0, interp.Interpolate(0)); Assert.Equal(20, interp.Interpolate(1)); Assert.Equal(20, interp.Interpolate(5)); Assert.Equal(20, interp.Interpolate(10)); var i2 = interp.Bump(1, 10); Assert.Equal(30, i2.Interpolate(10)); var i3 = interp.Bump(1, 20, true); Assert.Equal(40, i3.Interpolate(10)); Assert.Throws <NotImplementedException>(() => interp.Sensitivity(0)); }
public void SecondDerivative(double point) { var interp = new LinearInVarianceInterpolator(new double[] { 0, 10, 20 }, new double[] { 10, 15, 40 }); var bump = 0.00000001; var v1 = interp.FirstDerivative(point); var v2 = interp.FirstDerivative(point + bump); var slope = (v2 - v1) / bump; Assert.Equal(slope, interp.SecondDerivative(point), 2); }