gpt4 book ai didi

python - Sympy:如何从总和中分解常数?

转载 作者:行者123 更新时间:2023-12-01 04:48:39 25 4
gpt4 key购买 nike

作为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com