def _main(): xs = [-2, 2, 3, 4, 9] ys = [1, 5, 3, 1, 2] interp1 = InterpXY(xs, ys) xs = [-1, 2, 3, 5.1, 7] ys = [-1, 2, 6, -3, 0] interp2 = InterpXY(xs, ys) + (-4, 3) fig, ax = plt.subplots() interp1.plot_diff(interp2, fig, ax) # interp1.plot(fig, ax, marker='o') # interp2.plot(fig, ax, marker='x') # abs(interp1-interp2).plot(fig, ax, marker='*') plt.grid(True) pp.pprint(InterpXY.get_diff_report(interp1, interp2)) plt.show()
def test_InterpXY(): ixy = InterpXY([1, 2, 3], [4, 5, 6]) assert ixy.get_vs(np.array([-10, 1, 1.5, 2, 2.25, 2.5, 3, 33 ])) == approx([4, 4, 4.5, 5, 5.25, 5.5, 6, 6.])
assert t.get_dsdx(np.array([x1, x2])) == approx([ (pi * 2**2 / 4 - pi * 4**2 / 4) / 2 ]) def test_tube_get_x2x1(): xs = [0, 2, 4, 6] ds = [1, 2, 4, 2] tube = Tube(xs, ds) for i in range(1000): x1 = np.random.uniform(0, 6) w = np.random.uniform(1, 10) x2 = tube.get_x2(x1, w) xx1 = tube.get_x1(x2, w) assert x1 == approx(xx1) if __name__ == "__main__": xs = [1, 2, 4] ixy = InterpXY([1, 2, 3], [4, 5, 6]) ans = np.array(ixy.get_vs(np.array([-1, 1, 1.5, 2, 2.25, 2.5, 3, 33]))) print(ans) print([4, 4, 4.5, 5, 5.25, 5.5, 6, 6.]) # ds = [1,1,1] # s = pi/4 # t = Tube(xs, ds) # for i in range(33): # x1 = -10 + random.random() * 30 # x2 = -10 + random.random() * 30 # x1, x2 = min(x1, x2), max(x1, x2) # print( np.asarray(t.get_dsdx(np.array([x1, x2])) ))
def test_get_xs_zeros4(): xs = [1, 2, 3, 4, 5] ys = [2, 2, 1, 2, 1] interp = InterpXY(xs, ys) zeros = interp.get_xs_zeros() assert zeros is None
def test_get_xs_zeros3(): xs = [1, 2, 3, 4, 5] ys = [2, 2, 0, 2, 1] interp = InterpXY(xs, ys) zeros = interp.get_xs_zeros() assert [3] == approx(zeros)
def test_get_xs_zeros2(): xs = [1, 2, 3, 4, 5] ys = [-2, 2, 0, -2, -1] interp = InterpXY(xs, ys) zeros = interp.get_xs_zeros() assert [1.5, 3] == approx(zeros)
def test_integrate4(): xs = [1, 2, 3, 4, 5] ys = [1, 2, 0, -2, -1] interp = InterpXY(xs, ys) assert 0 == approx(interp.integrate(1.5, 4.5))
def test_integrate3(): xs = [1, 2, 3, 4, 5] ys = [1, 2, 0, -2, -1] interp = InterpXY(xs, ys) assert -10 == approx(interp.integrate(10, 20))