Функция алгебры поиска Python - PullRequest
3 голосов
/ 10 ноября 2010

Я пытаюсь заставить функцию поиска работать с проблемами алгебры.Я хочу что-то вроде Wolfram Alpha, но я создаю для этого фреймворк на Python.Он должен быть в состоянии выяснить несколько переменных и уравнений по обе стороны знака равенства.Недавно я спросил о валидаторе для программы, поэтому мне нужен цикл, который проходит через ряд чисел и выясняет, что равняется каждой из переменных.Моя проблема - десятичные дроби.Я предлагаю использовать функцию поиска.Вот решатель уравнений:

def s_equation(a):
   left, right = a.split('=')
   return eval(left) == eval(right)

Любая помощь полезна!

1 Ответ

1 голос
/ 10 ноября 2010

eval() не будет работать, потому что левый и правый являются строками, а не выражениями. Более того, вам нужно будет сделать существенную проверку, чтобы сделать то, что пользователь может ввести допустимое выражение Python. Рассмотрим несколько значений, которые вы можете получить:

# The typical person's notation for x-squared isn't valid Python
x^2 + x - 3
# 3x means 3 * x to us, but to python it means nothing
3x + 4
# Some people use % to represent division, but that's a modulo operator to Python
3 % 4x
# Python doesn't understand the distributive property
3(4 - x)
# People might use some functions in a way Python doesn't understand
cos x
# Square brackets are used synonymously with parentheses
x[(x^2 - 5)(x^3 - 5x)]

Итак, вкратце, вам понадобится какой-то движок для преобразования простых текстовых уравнений в допустимые выражения Python. Это непростая задача, но она, безусловно, может быть выполнена.

Хотя ваш проект очень амбициозный, я думаю, что это отличный способ использовать Python! Если вы придумали интеллектуальный способ преобразования уравнений в виде строк в действительный Python, вы должны немедленно поделиться им, потому что довольно много людей в научном и математическом сообществе могли бы использовать это.

...