You cannot pass a function handle to polyval.
"The input argument p is a vector of length n+1 whose elements are the coefficients in descending powers of the polynomial to be evaluated."
Notice that your ap already does a polyval, so even if you invoked ap somehow it would be a mistake to use it in polyval afterwards.
You should just be using
y2 = abs(polyval(x2,p));
trapz(x2, y2)