나는 항상 손으로 물건을 계산하지만, 지금 나의 동지들은 불쾌 해지고 위의 표현과 같이 물건을 막는 것과 관련하여 많은 반복적 인 운동을하고 있습니다. 이러한 종류의 방정식을 단순화하기 위해 Python 또는 R과 같은 오픈 소스 소프트웨어에 특히 관심이 있습니다. 나는 볼프람 알파를 사용하여 시도 하지만 실패했습니다. 식 x = √ 를 대체 할 수있는 오픈 소스 소프트웨어 패키지방정식x 2 +2x+에 2 t−1
하여 결과를 간단히 하시겠습니까? 특히, 나는명령과 같은 소프트웨어 패키지를 찾고있습니다.
simplify
답변
원하는 단순화 명령 이있는 Python 라이브러리 인 SymPy 를 살펴볼 수 있습니다 .
>>> from sympy.abc import t
>>> import sympy
>>> x = t*2**(1/2) - 1
>>> x**2 + 2*x + 3
2*t + (t - 1)**2 + 1
>>> sympy.simplify(x**2 + 2*x + 3)
t**2 + 2
답변
Sage는 그렇게 할 수 있습니다 (단순화 부분에 도달하려면 페이지를 꽤 아래로 스크롤해야합니다).
또한 Sage의 기호 수학에 대한 일반적인 소개를 읽으십시오. 시맨틱과 구문은 Mathematica 와는 상당히 다르며 , 이는 대부분의 사람들이 익숙한 것입니다.
다음은 내가 연결 한 설명서의 예입니다.
sage: var('x,y,z,a,b,c,d,e,f')
(x, y, z, a, b, c, d, e, f)
sage: t = a^2 + b^2 + (x+y)^3
# substitute with keyword arguments (works only with symbols)
sage: t.subs(a=c)
(x + y)^3 + b^2 + c^2
귀하의 경우 다음과 같이 작동합니다.
var(f,x,t)
f=x^2+2*x+3
f.subs(x=(sqrt(2)*t-1))
f.simplify()
답변
이미 고급 고급 오픈 소스 패키지로 몇 가지 좋은 답변을 받았습니다.
Mathematica 구문을 사용하는 오픈 소스 CAS 인 http://www.mathics.net/ (http://mathics.org/ (다운로드하려는 경우 http://mathics.org/) 를 가리키고 싶습니다. WolramAlpha를 사용하는 경우 약간). 그것은 당신이 얻은 다른 제안만큼이나 완벽하지는 않습니다. 그러나 질문에서 이야기 한 (매우 간단한) 작업을 수행 할 수 있습니다.
귀하의 질문에서 말하는 것은 실제로 단순화가 아니라 대체 및 확장입니다 (더 복잡한 단순화와 달리 가장 기본적인 CAS에서도 사용 가능한 작업을 구현하기가 매우 쉽습니다).
Mathics에서는 다음과 같습니다.
eq = x^2 + 2x + 3
eq /. x -> Sqrt[2] t - 1
Expand[%]
단순화 함수가 필요한 경우이라고 Simplify[]
하며 위의 Expand[]
예제 대신 작동 합니다.
답변
ax가 제안한 바와 같이 , wxMaxima 는 Maxima 라고 하는 유명한 lisp 기반 컴퓨터 대수 시스템에 대한 훌륭한 그래픽 프론트 엔드 입니다.
예제를 사용하면 다음과 같은 것을 얻을 수 있습니다.
eq1: x=t*2**(1/2)-1;
eq2: x**2+2*x+3;
eq3: subst(eq1, eq2);
ratsimp(eq3);
또는 직접 할 수 있습니다.
ratsimp(subst(x=t*2**(1/2)-1, x**2+2*x+3));
Maxima에는 여러 가지 단순화 방법이 있지만 ratsimp
좋은 첫 단계입니다.