如何解决使用SymPy / Python进行部分分数分解
如何找到这样的常数A,B,C,D,K,S
1/(x**6+1) = (A*x+B)/(x**2+1) + (C*x+D)/(x**2-sqrt(3)*x+1) + (K*x+S)/(x**2+sqrt(3)*x+1)
对于每个实数x都是正确的。
我可能需要一些不确定的代码。或任何其他可以在这里提供帮助的Python库。
我手动进行了尝试,但这一点都不容易:经过1小时的计算,我发现自己可能犯了一些错误。
我在SymPy中尝试了部分分数分解,但是进展不远。
我也尝试过Wolfram Alpha,但看起来它并没有分解到如此详细的水平。
请参阅下文WA提供的替代表格。
编辑
我完全手动进行了第二次尝试,得到了这些:
A = 0
B = 1/3
C = -1/(2*sqrt(3))
D = 1/3
K = 1/(2*sqrt(3))
S = 1/3
我该如何验证是否正确?
编辑2
我的问题的重点是:如何使用一些不错的/可重复使用的Python代码来做到这一点?
解决方法
您可以在sympy中使用apart
来执行此操作,但是apart
会默认查找有理因式分解,因此您必须告诉它可以在Q(sqrt(3))
中使用:
In [37]: apart(1/(x**6+1))
Out[37]:
2
x - 2 1
- ─────────────── + ──────────
⎛ 4 2 ⎞ ⎛ 2 ⎞
3⋅⎝x - x + 1⎠ 3⋅⎝x + 1⎠
In [36]: apart(1/(x**6+1),extension=sqrt(3))
Out[36]:
√3⋅x - 2 √3⋅x + 2 1
- ───────────────── + ───────────────── + ──────────
⎛ 2 ⎞ ⎛ 2 ⎞ ⎛ 2 ⎞
6⋅⎝x - √3⋅x + 1⎠ 6⋅⎝x + √3⋅x + 1⎠ 3⋅⎝x + 1⎠
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。