在 SymPy 1.3 中,我有一些线性组合,例如
N1*(-sqrt(15)/36 + 5/36) - 5*N2/18 + N3*(sqrt(15)/36 + 5/36)
如何强制分数为 (5-sqrt(15))/36
?
最佳答案
申请together
,它可以作为函数 together(expr)
或方法 expr.together()
进行调用。如果将其应用于整个表达式,结果可能会过多收集:
N1, N2, N3 = symbols('N1 N2 N3')
expr = N1*(-sqrt(15)/36 + S(5)/36) - 5*N2/18 + N3*(sqrt(15)/36 + S(5)/36)
print(together(expr))
打印(N1*(-sqrt(15) + 5) - 10*N2 + N3*(sqrt(15) + 5))/36
。
这是一个有选择地一起
应用于每个符号系数的版本。
for sym in expr.free_symbols:
expr = expr.xreplace({expr.coeff(sym): together(expr.coeff(sym))})
print(expr)
打印 N1*(-sqrt(15) + 5)/36 - 5*N2/18 + N3*(sqrt(15) + 5)/36
。
关于python - 如何在 SymPy 中收集分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52479112/