sympy - упрощать выражение рациональными способностями - PullRequest
0 голосов
/ 04 февраля 2020

Следующий код:

import sympy as sp
D, H, Vs = sp.symbols("D, H, V", real=True, positive=True)
x = sp.symbols("x", real=True, positive=True)

V = sp.pi * D**2 / 4 * H
V = V.subs(H, x) * D
D_expr = sp.solve(Vs - V, D)[0]
print(D_expr)

производит: 2**(2/3)*V**(1/3)/(pi**(1/3)*x**(1/3))

Я бы хотел упростить D_expr. В идеальном мире я хотел бы получить (4 * V / (sp.pi * x))**(1/3)

Я попробовал метод simplify(), powsimp(), powsimp(force=True): совсем не повезло! Выражение остается прежним. Согласно учебнику по упрощению , мои символы должны удовлетворять необходимым условиям для упрощения. Что я делаю не так?

1 Ответ

2 голосов
/ 04 февраля 2020

Числовые значения делятся на радикалы. Часто это позволяет лучше упростить использование сумм, поэтому root(pi*x, 3) будет делиться на pi**(1/3)*x**(1/3). Но есть возможность вернуть root неоцененный ... и, если вы хотите навязать свои факторы под кубом root, вы можете сделать:

>>> root(D_expr**3, 3, evaluate=0)
(4*V/(pi*x))**(1/3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...