python计算对角线有理函数插值,python对角线插值,''' p = rati


''' p = rational(xData,yData,x)    Evaluates the diagonal rational function interpolant p(x)    that passes through he data points'''    from numpy import zerosdef rational(xData,yData,x):    m = len(xData)    r = yData.copy()    rOld = zeros(m)    for k in range(m-1):        for i in range(m-k-1):            if abs(x - xData[i+k+1]) < 1.0e-9:                return yData[i+k+1]            else:                c1 = r[i+1] - r[i]                c2 = r[i+1] - rOld[i+1]                c3 = (x - xData[i])/(x - xData[i+k+1])                r[i] = r[i+1] + c1/(c3*(1.0 - c1/c2) - 1.0)                rOld[i+1] = r[i+1]    return r[0]

评论关闭