Форум сайта python.su
При попытке найти dr(x^2,x^4,x) и dr(x^5,x^2,x)— все получается, но при попытке найти dr(x,x^2) возникает ошибка.
Если брать dr(x^2,x) то опять же - все работает.
Ошибка: File “”, line 1, in File “”, line 21, in dr UnboundLocalError: local variable ‘B’ referenced before assignment
Понимаю что проблема из-за того, что В не указана, но как бы я не старался убрать if - не получается. Но при совмещении else+if=elif s==o - ошибка исчезает, но dr(x,x^2) вообще не выводит ничего, пустая колонка.
def dr(p,q,x=x): p=p*x^0 q=q*x^0 t=diff(q) u=p.degree(x)+1 s=p.degree(x)-t.degree(x) o=s+1 if s<0: print('The integral does not undertake in elementary functions') else: if s==0: A=var('A0') else: A=var(['A%d' %n for n in range(o)]) r=sum([A[i]*(x^i) for i in range(o)]) h=diff(r,x)+r*diff(q,x)-p l=diff(r,x)+r*diff(q,x) B=([l.coefficient(x,n) for n in range(u)]) C=([p.coefficient(x,n) for n in range(u)]) if o==1: t=solve((B[u-1]-C[u-1]==0),r) r=r.subs(t) print(r) else: z=[h.subs(x=n)==0 for n in range(u)] t=solve(z,A) l=len(t[0]) if t[0][l-1]!=0: r=r.subs(t) print(r) else: print('The integral does not undertake in elementary functions') dr(x^2,x^4,x) dr(x^5,x^2,x) dr(x,x^2)
Офлайн
def dr(p,q,x=x)
def dr(p,q,x=10)
SOME_VAL = 10 def dr(p,q,x=SOME_VAL)
Отредактировано FishHook (Дек. 25, 2016 18:31:08)
Офлайн