Почему у Вас так получилось?
y'=p;
dy=p*dx;
y=x*p*p+2*x*p => dy=p*p*dx+2*p*x*dp+2*p*dx+2*x*dp=p*dx;
(p*p+p)*dx+(2*x*p+2*x)*dp=0;
(p+1)*(p*dx+2x*dp)=0
p=-1 либо 2*dp/p=-dx/x.