I am trying to integrate a function using the scipy library:
import numpy as np
import pandas as pd
from scipy.optimize import fsolve
from scipy.integrate import quad
from scipy.integrate import trapz
import matplotlib.pyplot as plt
x = np.array([-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1])*5.4
y = np.array([20.6398, -45.2398, -113.8779, -52.7028, 618.7554, -52.7028, -113.8779, -45.2398, 20.6398])
function = np.polyfit(x, y, 8)
def u(x):
a = function[0]
b = function[1]
c = function[2]
d = function[3]
e = function[4]
f = function[5]
g = function[6]
h = function[7]
l = function[8]
return a*x**8 + b*x**7 + c*x**6 + d*x**5 + e*x**4 + f*x**3 + g*x**2 + h*x + l
St =trapz(y,x)
print(St)
Squad, err = quad(u,-5.4,+5.4)
print(Squad)
the results are : trapz : 291.2681699999999 quad : -1598.494351085969
why the results are different and which is the correct result
this is the graph of the function:

