hat_function_value.py

# function p = hat_function_value (j, xi, n, h, z)
#  Accompanying program for the text
#
#     Classical and Modern Numerical Analysis:
#     Theory, Methods and Practice
#  by Azmy S. Ackleh, Edward J. Allen,
#     R. Baker Kearfott, and Padmanabhan Seshaiyer
#
#     (Taylor and Francis / CRC Press, 2009)
#
#  This is an auxiliary routine used by interpolant_with_hat_function_basis.

def hat_function_value (j, xi, n, h, z):
        ''' Note: unlike in the matlab version, j is taken to be a zero-based index '''
        print(j,xi,n,h,z)
        if j==0 and xi[0] <= z and z <=xi[1]:
                print(0)
                p=(xi[1]-z)/h
        elif j==n and xi[n-1] <= z and z <= xi[n]:
                print(1)
                p=(z-xi[n-1])/h
        elif 1 <= j and j < n and xi[j-1] <= z and z <= xi[j]:
                print(2)
                p=(z-xi[j-1])/h
        elif 1 <= j and j < n and xi[j] <= z and z <= xi[j+1]:
                print(3)
                p=(xi[j+1]-z)/h
        else:
                p=0
        return p