Найти - Пользователи
Полная версия: Решение полинома в python.
Начало » Python для экспертов » Решение полинома в python.
1 2
gazoni16
извините за дублирование темы , но …
Вот может кто нибудь подскажет какие функции, классы и что еще мне стоит создать что бы научить питона упрощать выражения такого вида:
(x - 5)(2x^3 + x(x^2 - 9))

в выражение вида 3x^4 - 15x^3 - 9x^2 + 45x

Какие-то доп. модули для упрощения не предлагать .

Может алгоритм предложит или подскажет польскую запись как реализовать.

Спасибо.
Master_Sergius
Я когда-то делал так:
1) парсим выражение и составляем два словаря, где ключи - степени, значения - коэффициенты
2) тогда само умножение довольно простое - пройтись по словарях и перемножать коэффициенты, а ключ - сумма ключей (4x^3 * 5x^2 = 20x^5, или
res[3+2] = 4 * 5
)
3) теперь можно делать из словаря строку.

Главная трудность - распарсить изначальное выражение.
gazoni16
Если честно то степени меня меньше всего волнуют. Большую проблему вижу в раскрытии скобок.
Master_Sergius
В данном случае надо будет использовать рекурсию. По сути, x(x^2 - 9) - это то же перемножение полиномов, которое внутри большего… Регекспы должны помочь найти выражения в скобках:
>>> expr
'(x - 5)(2x^3 + x(x^2 - 9))'
>>> re.findall("\([^(]*?\)", expr)
['(x - 5)', '(x^2 - 9)']
gazoni16
о да. это мне несколько упрощает решение)))
JOHN_16
символьные вычисления SymPy Смотрите в документации раздел tutorial для быстрого ознакомления. Есть онлайн песочница

Но вы почему то хотите делать это руками. Препод злой?
gazoni16
JOHN_16
символьные вычисления SymPy Смотрите в документации раздел tutorial для быстрого ознакомления. Есть онлайн песочница Но вы почему то хотите делать это руками. Препод злой?

Вступительная комиссия злая.

Неужели все сумпу своего питона кормят?

На Sympy задача решена:

f = (new_list(pilinom)) # Изменит вид первоначального выражения.

f= sympify(f) ### Из строковой переводит в типизированную строку.

f = ((f).expand()) ### Раскрывает скобки и производит операции упрощения.

f = (vid(f)) # Изменит вид в соответствии c требованиями.


JOHN_16
gazoni16
Неужели все сумпу своего питона кормят?
конечно. Библиотеки для того и пишутся что бы упрощать жизнь.
Shaman
У меня ещё и wxMaxima стоит.
gazoni16
А кто нить польской обратной последовательностью пользовался???
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB