Décomposition de fraction partielle à l'aide de SymPy / Python

Sep 28 2020

Comment trouver les constantes A, B, C, D, K, S telles que

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)

est vrai pour chaque vrai x.

J'ai besoin de code sympy peut-être, pas sûr. Ou toute autre bibliothèque Python qui pourrait aider ici.

J'ai essayé à la main mais ce n'est pas du tout facile: après 1 heure de calcul, j'ai constaté que j'avais probablement fait une erreur.

J'ai essayé la décomposition de fraction partielle dans SymPy mais cela ne va pas aussi loin.

J'ai aussi essayé Wolfram Alpha, mais il ne se décompose pas non plus à ce niveau de détail, semble-t-il.

Tentative WA

Voir les formes alternatives que WA donne ci-dessous.

Éditer

J'ai fait un deuxième essai entièrement à la main et j'ai obtenu ceux-ci:

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

Comment puis-je vérifier si elles sont correctes?

Modifier 2

Le point principal de ma question est: comment faire cela avec du code Python sympa / réutilisable?

Réponses

4 OscarBenjamin Sep 29 2020 at 01:31

Vous pouvez le faire en utilisant apartdans sympy mais vous apartrechercherez une factorisation rationnelle par défaut donc vous devez lui dire de travailler dans 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⎠