All pastes #249773 Raw Edit

Mine

public text v1 · immutable
#249773 ·published 2006-11-16 03:44 UTC
rendered paste body
def N(i,k,u):
    if k == 1:
        if kv[i] <= u and u < kv[i+1]:
            return 1
        else:
            return 0
    else:
        val = 0
        if N(i,k-1,u)*(u - kv[i])==0 and (kv[i+k-1] - kv[i])==0:
            val += 0
        else:
            val += N(i,k-1,u)*(u - kv[i])/(kv[i+k-1] - kv[i])
            
        if N(i+1,k-1,u)*(kv[i+k] - u)==0 and (kv[i+k] - kv[i+1])==0:
            val += 0
        else:
            val += N(i+1,k-1,u)*(kv[i+k] - u)/(kv[i+k] - kv[i+1])
            
    return val

def Q(u):
    k=4
    sum_x = 0
    sum_y = 0
    totaln = 0
    for i in range(len(points)):
        temp= N(i,k,u)
        totaln += temp
        sum_x += points[i][0]*temp
        sum_y += points[i][1]*temp
    #check if total N = 1.0 , which it should
    if totaln < 0.99999 or totaln > 1.000001:
        print "totaln = %.15f at u= %f "% (totaln, u)
    return (sum_x,sum_y)