Example #1
0
def interp(X, Y, o, v):
    i = SeqServices.index(X, v)
    if (o == 1):
        return SeqServices.interpLin(X[i], Y[i], X[i + 1], Y[i + 1], v)
    else:
        return SeqServices.interpQuad(X[i], Y[i], X[i + 1], Y[i + 1], X[i + 2],
                                      Y[i + 2], v)
Example #2
0
    def eval(x, z):

        if (not SeqServices.isInBounds(Data.Z, z)):
            raise Exceptions.OutOfDomain("Z value is out of domain")

        j = SeqServices.index(Data.Z, z)

        return SeqServices.interpLin(Data.Z[j], Data.S[j].eval(x),
                                     Data.Z[j + 1], Data.S[j + 1].eval(x), z)
    def interp(X, Y, o, v):

        i = SeqServices.index(X, v)

        if o == 1:
            return SeqServices.interpLin(X[i], Y[i], X[i + 1], Y[i + 1], v)

        elif o == 2:
            return SeqServices.interpQuad(X[i - 1], Y[i - 1], X[i], Y[i],
                                          X[i + 1], Y[i + 1], v)
Example #4
0
    def eval(x, z):

        if (not (isInBounds(Data.Z, z))):
            raise OutOfDomain("The input variable is out of the domain")

        j = SeqServices.index(Data.Z, z)

        x1, y1, x2, y2 = Data.Z[j], (Data.S[j]).eval(x), Data.Z[j + 1], (
            Data.S[j + 1]).eval(x)

        return SeqServices.interpLin(x1, y1, x2, y2, x)
Example #5
0
 def __init__(self, X, Y, i):
     print(X)
     if (len(X) != len(Y)):
         raise SeqSizeMismatch("length of X and Y not equal")
     if not SeqServices.isAscending(X):
         raise IndepVarNotAscending("X values not ascending")
     if i < 1 or i > MAX_ORDER:
         raise InvalidInterpOrder("Order not 1 or 2")
     self.__o = i
     self.__minx = X[0]
     self.__maxx = X[len(X) - 1]
     self.__f = lambda v: interp(X, Y, i, v)
    def __init__(self, X, Y, i):

        if SeqServices.isAscending(X) == False:
            raise Exceptions.IndepVarNotAscending(
                "Independant variable x is not ascending")

        elif len(X) != len(Y):
            raise Exceptions.SizeSeqMismatch("Sequence sizes do not match")

        elif i not in range(1, CurveT.MAX_ORDER + 1):
            raise Exceptions.InvalidInterpOrder(
                "Interpolation order is illegal")

        self.minx = X[0]
        self.maxx = X[len(X) - 1]
        self.o = i
        self.f = lambda v: CurveT.interp(
            X, Y, self.o, v)  #creates an anonymous function and returns it
Example #7
0
 def test_index(self):
     assert SeqServices.index(self.X, 1) == 0
     assert SeqServices.index(self.X, 4.9) == 3
Example #8
0
 def test_interpQuad(self):
     assert SeqServices.interpQuad(3.5, 7.2, 6, 8.3, 9.9, 60,
                                   2) == pytest.approx(6132.308, rel=1e-3)
Example #9
0
 def test_interpLin(self):
     assert SeqServices.interpLin(3.5, 7.2, 6, 8.3,
                                  2) == pytest.approx(6.54, rel=1e-3)
Example #10
0
 def test_inBounds(self):
     assert SeqServices.isInBounds(self.X, 3.3) == True
Example #11
0
 def test_isAscending(self):
     assert SeqServices.isAscending(self.X) == True
     assert not (SeqServices.isAscending(self.Y) == True)
     assert SeqServices.isAscending(self.Z) == True