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 lib.
수작업으로 시도했지만 전혀 쉽지 않습니다. 1 시간 동안 계산을 한 후 아마도 실수를 한 것 같습니다.
SymPy에서 부분 분수 분해를 시도했지만 그렇게 멀리 가지 않습니다.
Wolfram Alpha도 시도했지만 그 정도의 디테일까지 분해되지 않는 것 같습니다.
WA 시도
아래에서 WA가 제공하는 대체 양식을 참조하십시오.
편집하다
나는 완전히 손으로 두 번째 시도를했고 다음을 얻었습니다.
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⎠