와 같은 대수 표현을 단순화 할 수있는 오픈 소스 또는 액세스하기 쉬운 소프트웨어가 있습니까?


17

나는 항상 손으로 물건을 계산하지만, 지금 나의 동지들은 불쾌 해지고 위의 표현과 같이 물건을 막는 것과 관련하여 많은 반복적 인 운동을하고 있습니다. 이러한 종류의 방정식을 단순화하기 위해 Python 또는 R과 같은 오픈 소스 소프트웨어에 특히 관심이 있습니다. 나는 볼프람 알파를 사용하여 시도 하지만 실패했습니다. 식 x = 를 대체 할 수있는 오픈 소스 소프트웨어 패키지방정식x 2 +2x+에 2 t1x=2t1하여 결과를 간단히 하시겠습니까? 특히, 나는명령과 같은 소프트웨어 패키지를 찾고있습니다.x2+2x+3simplify

답변:


28

원하는 단순화 명령 이있는 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

2
저는 Sage 를 제안하려고 했지만 아직 상징적 인 기능이없는 것 같습니다.하지만 메이플과 Mathematica의 오픈 소스 대안이되기 위해 상징적 인 기능을 통합 할 것이라고 생각할 것입니다.
Geoff Oxberry 2012 년

1
Sage는 상징적 인 기능을 가지고 있지만 (나는 그것을 상징적 적분을하기 위해 사용했습니다), 그러나 당신이 그것을 찾지 않으면 어떻게 그렇게하는지는 명확하지 않습니다. 를 기호로 사용하려면에서와 같이 미리 선언해야합니다 var('a'). 적어도 3-4 년 전에 세이지를 마지막으로 사용했을 때 적어도 이것이 사실이었습니다. 일반적으로, 수학은 기호 결과를 원한다고 가정하고 세이지는 숫자 결과를 원한다고 가정합니다.
Dan

1
@hhh : 내가 실수하지 않으면 코드 조각이 평가하고 단순화하려는 표현과 일치하지 않습니다.
Geoff Oxberry

@ GeoffOxberry : 원래 문제에서 LaTeX의 문제뿐만 아니라 그 문제를 해결하려고했습니다.
잭 폴슨

1
내 이해는 Sage가 실제로 SymPy 코드베이스의 많은 부분을 통합한다는 것입니다.
MRocklin

9

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()

그렇다면 문서 검색 엔진을 개선해야합니다. "simplify"를 입력했는데 해당 페이지 를 전혀 얻지 못했습니다 . 좋은 발견!
Geoff Oxberry

방금 Google에 "Sage 단순화"를 입력했습니다.
Dan

8

이미 고급 고급 오픈 소스 패키지로 몇 가지 좋은 답변을 받았습니다.

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[]예제 대신 작동 합니다.


8

ax가 제안한 바와 같이 , wxMaximaMaxima 라고 하는 유명한 lisp 기반 컴퓨터 대수 시스템에 대한 훌륭한 그래픽 프론트 엔드 입니다.

예제를 사용하면 다음과 같은 것을 얻을 수 있습니다.

eq1: x=t*2**(1/2)-1;
엑스=21
eq2: x**2+2*x+3;
엑스2+2엑스+
eq3: subst(eq1, eq2);
(21)2+2(21)+
ratsimp(eq3);
22+2

또는 직접 할 수 있습니다.

ratsimp(subst(x=t*2**(1/2)-1, x**2+2*x+3));
22+2

Maxima에는 여러 가지 단순화 방법이 있지만 ratsimp좋은 첫 단계입니다.





당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.