Форум сайта python.su
0
Вот может кто нить подскажет какие функции классы и что еще мне стоит создать что бы на учить питона упрощать выражения такого вида:
(x - 5)(2x^3 + x(x^2 - 9))
в выражение вида 3x^4 - 15x^3 - 9x^2 + 45x
Какие-то доп. модули для упрощения не предлагать .
Может алгоритм предложит или подскажет польскую запись как реализовать.
Спасибо.
Офлайн
20
gazoni16А какие вам известны готовые доп. модули для решения этой задачи? И чем они вас не устраивают?
Какие-то доп. модули для упрощения не предлагать .
Офлайн
0
sympy. в две строчки решает.
Офлайн
88
А посмотреть потроха sympy?
Офлайн
0
А тааааам черт ногу сломит. Все на функция, модулях и под модулях. Если честно то у меня не получилось… разобраться
Офлайн
20
gazoni16Да, обратная польская запись здесь очень пригодится. С польской записью тесно связаны деревья (пример для вашего случая см. на прилагаемом рисунке). Вам надо написать функцию формирования такого дерева из заданного многочлена с учетом приоритетов операторов. Операторы располагаются в узлах дерева, операнды в листьях. Затем другая функция должна делать рекурсивный обход полученного дерева с вычислением результатов. Скорее всего, потребуется стек для хранения операторов при обходе дерева и их извлечения при вычислении. Для использования в качестве стека в Python хорошо подходит обычный список.
Вот может кто нить подскажет какие функции классы и что еще мне стоит создать что бы на учить питона упрощать выражения такого вида: (x - 5)(2x^3 + x(x^2 - 9))в выражение вида 3x^4 - 15x^3 - 9x^2 + 45xКакие-то доп. модули для упрощения не предлагать .Может алгоритм предложит или подскажет польскую запись как реализовать.Спасибо.
Прикреплённый файлы:
Tree.png (13,6 KБ)
Офлайн