0
def nonuniform_poly_interpolation(a,b,p,n,x,f,produce_fig):
    xhat = np.zeros(p+1)
    
    for j in range(p+1):
        xhat[j] = b - a + a * np.cos(np.pi * (((2*j)+1)/(2*(p+1))))
    
    lagrange_matrix = lagrange_poly(p,xhat,n,x,1e-10)
    
    nu_interpolant = np.empty(n)
    
    for i in range(p+1):
        nu_interpolant[i] = nu_interpolant[i] + (f(xhat[i]) * lagrange_matrix[i]);
    fig = plt.figure() 
    plt.plot(x,f(x), label = "f(x)") 
    plt.plot(x,nu_interpolant, label = "Pp(x)")
    plt.legend(loc = "upper left")
    plt.xlabel("x")
    plt.ylabel("Pp(x)")
    plt.title("Nonuniform Polynomial Interpolation")
    plt.show()
    
    if produce_fig == True:
        fig = fig 
    else:
        fig = None
    
    return nu_interpolant, fig

Not sure what "ValueError: setting an array element with a sequence" means and how I could fix this code? It is sensing an error on line 127 (for i in range(p+1): nu_interpolant[i] = nu_interpolant[i] + (f(xhat[i]) * lagrange_matrix[i]);

0 Answers0