Здравствуйте, нужно написать функцию которая интегрирует правильные дроби. Есть код, но не работает, не понимаю почему. Могли бы вы, пожалуйста, подправить и объяснить что не так?
def dzt(p,q,x=x):
T=PolynomialRing(QQ,1,'x')
x=var('x')
q=q*x^0
q=q.full_simplify()
p=p*x^0
p=p.full_simplify()
l=list(T(q).factor())
h3=1
h4=1
for n in range(len(l)):
h3=(h3*l[n][0])^(l[n][1]-1)
for n in range(len(l)):
h4=(h4*l[n][0])
k=h4.degree()+h3.degree()
if (h3.degree()==1):
h1=A0
else:
A=var(['A%d' %n for n in range(h3.degree())])
h1=sum([A[n]*(x^n) for n in range(h3.degree())])
if (h4.degree==1):
h2=B0
else:
B=var(['B%d' %n for n in range(h4.degree())])
h2=sum([B[n]*(x^n) for n in range(h4.degree())])
h=(diff((h1/h3),x)+h2/h4-p/q)
h=h.full_simplify()
m=[]
for n in range(k+len(l)):
if (q.subs(x=n))!=0:
m=m+[n]
v=A+B
y=solve([h.subs(x=m[n]) for n in range(k)],v)
h1=h1.subs(y[0])
h2=h2.subs(y[0])
d=denominator(h2)
h2=h2*denominator(h2)
C=PolynomialRing(RR,1,'x')
h2=C(h2)
h4=C(h4)
h1=h1/h3
h2=h2/h4
C.<w>=RR[]
h2=h2.subs(x=w)
z1=h2.partial_fraction_decomposition()
z=0
for n in range(len(z1[1])):
z=z+integral(z1[1][n],w)
z=z.subs(w=x)
f=h1+z/d
f=f.subs(x=x)
return f