2016-12-25 28 views
-2
def fun(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') 

fun(x,x**2) не работает, но. если я попробую fun(x**2,x) это сработает. или fun(x,x**3).местная переменная 'B', на которую ссылаются до присвоения

File “”, line 1, in File “”, line 21, in dr UnboundLocalError: local variable ‘B’ referenced before assignment

Возможно ли кто-нибудь исправить пожалуйста? Я попробовал все, что мог себе представить.

ответ

1

если s == 0 и o == 1, то B не определено. Постарайтесь следовать логике вашего кода.

0

Переменная B не было назначено никому, если указано в строке 21, что означает, что B не существует. Так что Python поднимает ошибку, потому что ему говорят делать вычисления со значением, которого не существует.

 Смежные вопросы

  • Нет связанных вопросов^_^