는, 예 : "부분 인수 분해는"(예를 들어, x**2 + 5*x + 7
이 (x + 2)*(x + 3) + 1
및 (x + 1)*(x + 4) + 3
에 해당하고, 당신이 그것에 무슨 일이 일어나고 있는지 이해하면 자신의 예를 가지고 올 어렵지 않다) 고유하지 않습니다.
수동으로 이러한 작업을 수행 할 수있는 방법이 있지만 내가 무엇을 찾고 있는지 알지 못하기 때문에 무엇을 말할지를 알기가 어렵습니다. 예를 들어,이 특정 예를 수행하는 가장 쉬운 방법은
>>> print(A.subs(phi, x + phi_0).factor().subs(x, phi - phi_0))
(phi - phi_0)**2 - 8
는 SymPy가 x
와 phi - phi_0
를 대체 할만큼 똑똑하지 않다 (x = phi - phi_0
하자이지만, x - phi_0
와 phi
를 대체 할만큼 똑똑하다 같은 일이다). 이것은 더 큰 다항식의 관점에서 고려하기를 원하거나 당신이 무엇을 목표로 삼고 있는지 잘 알지 못한다면 멋지게 일반화되지 않습니다. 그러나 변수의 이름이 주어지면 나는 phi - phi_0
이 당신이 신경 쓰는 것이라고 생각합니다.
이 외에도 식을 파고 들어 자신의 알고리즘을 파고 작성하여 원하는 단순화를 수행 할 수 있음을 지적해야합니다. 시작하려면 http://docs.sympy.org/latest/tutorial/manipulation.html을보십시오. 또한 Expr
의 모든 방법을 살펴보십시오. 다양한 as_*
메소드와 같은 것들을 작성하게되면 꽤 유용한 헬퍼 함수가 있습니다.
예상 답변에 오타가 있습니다. '(phi-phi_0) ** 2 - 8'이어야합니다. (이것은 당신의 문제를 일으키지 않지만 누군가를 혼란스럽게 할 수 있습니다.) – svk
고마워요. 오타가 수정되었습니다. – ibell
factor()는 표현식의 일부만 사용해야 하는지를 결정할 수 없다고 생각합니다. factor (x ** 2 + 2 * x + 2)를 고려하십시오. factoration을 허용하려면 +1을 식과 분리해야한다고 어떻게 결정합니까? – kazemakase