python - 如何在 SymPy 中收集分数?
问题描述
在 SymPy 1.3 我有一些线性组合,比如
N1*(-sqrt(15)/36 + 5/36) - 5*N2/18 + N3*(sqrt(15)/36 + 5/36)
我如何强制分数是(5-sqrt(15))/36
?
解决方案
Apply 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
。
这是一个选择性地应用于together
每个符号的系数的版本。
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
。
推荐阅读
- angular - 从 onDeactivate 访问 p-inplace 内容值
- sql-server - ApplicationIntent=ReadOnly 缺失
- hadoop - Hadoop:直接调用时start-dfs.sh不起作用
- firebase - Flutter - 使用提供程序包侦听 Firebase 用户的用户配置文件(Firestore)中的数据更改
- android - 设置与edittext中的文本大小相同的可绘制文本
- java - 如何使用准备好的语句更新 ARRAY 的单个元素?
- android - 如何在 react-native 中的 mapbox 地图上绘制导航线?
- visual-studio - Visual Studio 2019 无法识别 Jdk 和 Android SDK
- javascript - SVG 在页面加载时未在浏览器中呈现
- kubernetes - 我可以检索 k8s 密钥并在集群外使用它吗?