使用SymPy/Python进行部分分式分解

2024-09-23 06:35:09 发布

您现在位置: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库

我用手试过,但一点也不容易:经过一个小时的计算,我发现我可能犯了一些错误

我在Symphy中尝试了部分分数分解,但没有达到那个程度

我也试过Wolfram Alpha,但它似乎也没有分解到那个细节层次

WA attempt

请参阅WA在下面给出的备选表格

编辑

我完全用手做了第二次尝试,得到了以下结果:

A = 0
B = 1/3
C = -1/(2*sqrt(3))
D = 1/3
K = 1/(2*sqrt(3))
S = 1/3

如何验证这些是否正确

编辑2

我问题的要点是:如何使用一些好的/可重用的Python代码来实现这一点


Tags: alpha编辑密码错误常数sqrt细节分数
1条回答
网友
1楼 · 发布于 2024-09-23 06:35:09

您可以在Symphy中使用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⎠


相关问题 更多 >