作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为 Sympy 新手,我试图通过在简单的情况下测试驱动它(简单的最小二乘法拟合直线)来学习如何使用它。这是我之前计算的结果(下一行是 iPython 的输出):
Sum(2*a*x(i)**2, (i, 1, N)) + Sum(2*b*x(i), (i, 1, N)) + Sum(-2*x(i)**2, (i, 1, N))
我现在希望 Sympy 从求和中获取常量(例如 2*a、2*b 和 -2)作为乘法因子,但我不知道如何实现那。我尝试过收集、分解和其他功能,但没有成功。您能帮我指出正确的方向吗?
最佳答案
这里的@smichr 相同,解决方案基本相同:
def cSum(s):
con, dep = factor_terms(s.function.as_independent(*s.variables))
return con*Sum(dep, *s.args[1:])
var('a b x N i')
eq = Sum(2*a*x(i)**2, (i, 1, N)) + Sum(2*b*x(i), (i, 1, N)) + \
Sum(-2*x(i)**2, (i, 1, N))
>>> pprint(eq.replace(lambda s: isinstance(s, Sum), lambda s: cSum(s)))
N N N
___ __ ___
\ ` \ ` \ `
2*a* \ 2 + 2*b* ) x(i) - 2* \ 2
/ x (i) /_, / x (i)
/__, i = 1 /__,
i = 1 i = 1
关于python - Sympy:如何从总和中分解常数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28876878/
我是一名优秀的程序员,十分优秀!