public void LinearInterpolatorTests_CanDifferentiate() { var interp = new LinearInterpolatorFlatExtrap(new double[] { 5, 10 }, new double[] { 5, 10 }); Assert.Equal(0, interp.FirstDerivative(0)); Assert.Equal(0, interp.FirstDerivative(20)); Assert.Equal(1.0, interp.FirstDerivative(6)); Assert.Equal(0, interp.SecondDerivative(0)); Assert.Equal(0, interp.SecondDerivative(20)); Assert.Equal(0.5, interp.SecondDerivative(5)); var interp2 = new LinearInterpolator(new double[] { 5, 10 }, new double[] { 5, 10 }); Assert.Equal(1.0, interp2.FirstDerivative(0)); Assert.Equal(1.0, interp2.FirstDerivative(20)); Assert.Equal(1.0, interp2.FirstDerivative(6)); Assert.Equal(0.0, interp2.SecondDerivative(0)); Assert.Equal(0.0, interp2.SecondDerivative(20)); Assert.Equal(1.0, interp2.SecondDerivative(5)); var interp3 = new LinearInterpolatorFlatExtrapNoBinSearch(new double[] { 5, 10 }, new double[] { 5, 10 }); Assert.Equal(0, interp3.FirstDerivative(0)); Assert.Equal(0, interp3.FirstDerivative(20)); Assert.Equal(1.0, interp3.FirstDerivative(6), 6); Assert.Equal(0, interp3.SecondDerivative(0)); Assert.Equal(0, interp3.SecondDerivative(20)); Assert.Equal(0.0, interp3.SecondDerivative(5), 6); }
public void LinearInterpolatorTests_CanExtrapolate() { IInterpolator1D interp = new LinearInterpolator(new double[] { 5, 10 }, new double[] { 5, 10 }); Assert.Equal(0, interp.Interpolate(0.0)); Assert.Equal(7.5, interp.Interpolate(7.5)); Assert.Equal(100, interp.Interpolate(100)); Assert.Equal(1, interp.FirstDerivative(0)); Assert.Equal(1, interp.FirstDerivative(5)); Assert.Equal(1, interp.FirstDerivative(100)); Assert.Equal(0, interp.SecondDerivative(0)); Assert.Equal(1, interp.SecondDerivative(5)); Assert.Equal(0, interp.SecondDerivative(100)); interp = new LinearInterpolatorFlatExtrap(new double[] { 5, 10 }, new double[] { 5, 10 }); Assert.Equal(5, interp.Interpolate(0.0)); Assert.Equal(7.5, interp.Interpolate(7.5)); Assert.Equal(10, interp.Interpolate(100)); Assert.Equal(0, interp.FirstDerivative(0)); Assert.Equal(1, interp.FirstDerivative(5)); Assert.Equal(0, interp.FirstDerivative(100)); Assert.Equal(0, interp.SecondDerivative(0)); Assert.Equal(0.5, interp.SecondDerivative(5)); Assert.Equal(0, interp.SecondDerivative(100)); }