SymPy / Pythonを使用した部分分数分解
Sep 28 2020
次のような定数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に当てはまります。
たぶん、Sympyコードが必要です。または、ここで役立つ可能性のある他のPythonライブラリ。
手で試してみましたが、なかなか簡単ではありません。1時間の計算で、間違いを犯した可能性があります。
SymPyで部分分数分解を試しましたが、それほど進んでいません。
Wolfram Alphaも試しましたが、それもそのレベルの詳細には分解されないようです。
WAの試み
WAが以下に提供する代替フォームを参照してください。
編集
私は完全に手で2回目の試行を行い、次のものを入手しました。
A = 0
B = 1/3
C = -1/(2*sqrt(3))
D = 1/3
K = 1/(2*sqrt(3))
S = 1/3
これらが正しいかどうかを確認するにはどうすればよいですか?
編集2
私の質問の要点は、これをいくつかの素晴らしい/再利用可能なPythonコードでどのように行うかです。
回答
4 OscarBenjamin Sep 29 2020 at 01:31
apartsympyを使用してこれを行うことができ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⎠