Форум сайта python.su
извините за дублирование темы , но …
Вот может кто нибудь подскажет какие функции, классы и что еще мне стоит создать что бы научить питона упрощать выражения такого вида:
(x - 5)(2x^3 + x(x^2 - 9))
в выражение вида 3x^4 - 15x^3 - 9x^2 + 45x
Какие-то доп. модули для упрощения не предлагать .
Может алгоритм предложит или подскажет польскую запись как реализовать.
Спасибо.
Офлайн
Я когда-то делал так:
1) парсим выражение и составляем два словаря, где ключи - степени, значения - коэффициенты
2) тогда само умножение довольно простое - пройтись по словарях и перемножать коэффициенты, а ключ - сумма ключей (4x^3 * 5x^2 = 20x^5, или
res[3+2] = 4 * 5
Отредактировано Master_Sergius (Окт. 28, 2015 18:54:55)
Офлайн
Если честно то степени меня меньше всего волнуют. Большую проблему вижу в раскрытии скобок.
Офлайн
В данном случае надо будет использовать рекурсию. По сути, x(x^2 - 9) - это то же перемножение полиномов, которое внутри большего… Регекспы должны помочь найти выражения в скобках:
>>> expr '(x - 5)(2x^3 + x(x^2 - 9))' >>> re.findall("\([^(]*?\)", expr) ['(x - 5)', '(x^2 - 9)']
Офлайн
о да. это мне несколько упрощает решение)))
Офлайн
символьные вычисления SymPy Смотрите в документации раздел tutorial для быстрого ознакомления. Есть онлайн песочница
Но вы почему то хотите делать это руками. Препод злой?
Отредактировано JOHN_16 (Окт. 28, 2015 22:43:56)
Офлайн
JOHN_16
символьные вычисления SymPy Смотрите в документации раздел tutorial для быстрого ознакомления. Есть онлайн песочница Но вы почему то хотите делать это руками. Препод злой?
Офлайн
gazoni16конечно. Библиотеки для того и пишутся что бы упрощать жизнь.
Неужели все сумпу своего питона кормят?
Офлайн
У меня ещё и wxMaxima стоит.
Офлайн
А кто нить польской обратной последовательностью пользовался???
Офлайн