TypeError: неподдерживаемые типы операндов для /: 'function' и 'add' - PullRequest
0 голосов
/ 24 октября 2019

Я работаю над кодом, который решает уравнения методом Ньютона. Умеет найти только один из ответов (корни). поэтому я пытаюсь разделить уравнение на x-answer и найти ответ на новое уравнение, которое является еще одним ответом исходного уравнения, но я получаю ошибку:

Traceback (most recent call last):
  File "C:\Users\fathollahy\Desktop\w.py", line 26, in <module>
    rt = f/WE
TypeError: unsupported operand type(s) for /: 'function' and 'Add'

Вот мой код:

from sympy import *
from random import randrange
x = Symbol('x')
T = input('Eqution: ')
f = eval(T)
f_prime = f.diff(x)
f = lambdify(x, f)
f_prime = lambdify(x, f_prime)
x = randrange(100)
print('attempts:')

while f(x) != 0:
  D = f_prime(x)
  F = f(x)
  Q = F/D
  x = x-Q
  print(x)
else:
  QW = x
  print("answer:")
  print(QW)
  input()

x = Symbol('x')
WE = x-QW
rt = f/WE
rt_prime = rt.diff(x)
rt = lambdify(x, rt)
rt_prime = lambdify(x, rt_prime)
x = randrange(100)
print('attempts:')

while rt(x) != 0:
  D = rt_prime(x)
  F = rt(x)
  Q = F/D
  x = x-Q
  print(x)
else:
  QW = x
  print("answer:")
  print(QW)
  input()

Этот код находит только один ответ и хорошо работает (за исключением ошибок метода Ньютона, таких как x ^ (1/3):

from sympy import *
from random import randrange
x = Symbol('x')
T = input('Eqution: ')
f = eval(T)
f_prime = f.diff(x)
f = lambdify(x, f)
f_prime = lambdify(x, f_prime)
x = randrange(100)
print('attempts:')

while f(x) != 0:
  D = f_prime(x)
  F = f(x)
  Q = F/D
  x = x-Q
  print(x)
else:
  QW = x
  print("answer:")
  print(QW)
  input()
...