Teilbruchzerlegung mit SymPy / Python

Sep 28 2020

Wie finde ich die Konstanten A, B, C, D, K, S so, dass

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)

gilt für jedes echte x.

Ich brauche vielleicht einen Sympy-Code, bin mir nicht sicher. Oder irgendeine andere Python-Bibliothek, die hier helfen könnte.

Ich habe es von Hand versucht, aber es ist gar nicht so einfach: Nach 1 Stunde Berechnung stellte ich fest, dass ich wahrscheinlich einen Fehler gemacht habe.

Ich habe versucht, eine Teilfraktion in SymPy zu zerlegen, aber es geht nicht so weit.

Ich habe auch Wolfram Alpha ausprobiert, aber es zerfällt anscheinend auch nicht in diesen Detaillierungsgrad.

WA Versuch

Siehe die alternativen Formen, die WA unten angibt.

Bearbeiten

Ich habe einen zweiten Versuch komplett von Hand gemacht und diese bekommen:

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

Wie kann ich überprüfen, ob diese korrekt sind?

Bearbeiten 2

Der Hauptpunkt meiner Frage ist: Wie mache ich das mit einem netten / wiederverwendbaren Python-Code?

Antworten

4 OscarBenjamin Sep 29 2020 at 01:31

Sie können dies mit apartsympy tun, suchen jedoch apartstandardmäßig nach einer rationalen Faktorisierung, sodass Sie anweisen müssen, dass in folgenden Funktionen gearbeitet werden soll 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⎠