{{위키데이터 속성 추적}}
{{소프트웨어 정보
|이름=SageMath
|로고=Sage logo new.png
|개발자=[[윌리엄 A. 스타인]]
|화면=File:Sagemath-jupyter-screenshot.png
|발표일={{시작 날짜와 나이|2005|2|24}}
|최근 버전={{#invoke:wd|property|P348|best}}
|최근 버전 출시일={{#invoke:wd|qualifier|P348|P577}}
|저장소={{#invoke:wd|property|P1324|best}}
|프로그래밍 언어={{#invoke:Wd|properties||linked|P277}}
|운영체제={{#invoke:Wd|properties|linked|P306}}
|라이선스=[[GPL|GPLv3]]
|웹사이트=[https://www.sagemath.org www.sagemath.org]}}
'''SageMath'''(과거 명칭: Sage 또는 SAGE, "System for Algebra and Geometry Experimentation"<ref>{{웹 인용|last=Stein|first=William|title=SAGE: A Computer System for Algebra and Geometry Experimentation|url=http://wstein.org/sage.html|accessdate=30 March 2012}}</ref>)는 대수학, 조합론, 그래프 이론, 수치해석, 수론, 미적분학, 통계학 등 수학의 다양한 분야의 기능을 갖춘 [[컴퓨터 대수학 시스템]]이다.

SageMath의 첫 버전은 2005년 2월 24일 [[GNU 일반 공중 사용 허가서]]를 따르는 [[자유-오픈 소스 소프트웨어|오픈 소스 자유 소프트웨어]]로 배포되었다.<ref>{{웹 인용| last=Stein | first= William | url= https://www.sagemath.org/why/stein-sd4.pdf | title=Sage Days 4 | date=12 June 2007 | access-date=2 August 2007 |archive-url = https://web.archive.org/web/20070627235122/https://www.sagemath.org/why/stein-sd4.pdf <!-- Bot retrieved archive --> |archive-date = 27 June 2007}}</ref> SageMath는 [[마그마 (컴퓨터 대수학 시스템)|마그마]], [[메이플 (소프트웨어)|메이플]], [[매스매티카]], [[MATLAB]]을 대체하는 오픈 소스 소프트웨어를 개발하는 것을 목적으로 개발되었다.

== 사용 예제 ==
=== 대수 및 미적분 ===
<syntaxhighlight lang="sage">
x, a, b, c = var('x, a, b, c')
# Note that IPython also supports a faster way to do this, by calling
# this equivalent expression starting with a comma:
# ,var x a b c

log(sqrt(a)).simplify_log() # returns 1/2*log(a)
log(a / b).expand_log() # returns log(a) - log(b)
sin(a + b).simplify_trig() # returns sin(a)*cos(b) + sin(b)*cos(a)
cos(a + b).simplify_trig() # returns -sin(a)*sin(b) + cos(a)*cos(b)
(a + b)^5 # returns (a + b)^5
expand((a + b) ^ 5) # a^5 + 5*a^4*b + 10*a^3*b^2 + 10*a^2*b^3 + 5*a*b^4 + b^5

limit((x ^ 2 + 1) / (2 + x + 3 * x ^ 2), x=Infinity) # returns 1/3
limit(sin(x) / x, x=0) # returns 1

diff(acos(x), x) # returns -1/sqrt(-x^2 + 1)
f = exp(x) * log(x)
f.diff(x, 3) # returns e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3

solve(a * x ^ 2 + b * x + c, x) # returns [x == -1/2*(b + sqrt(-4*a*c + b^2))/a,
                                # x == -1/2*(b - sqrt(-4*a*c + b^2))/a]

f = x ^ 2 + 432 / x
solve(f.diff(x) == 0, x) # returns [x == 3*I*sqrt(3) - 3,
                         # x == -3*I*sqrt(3) - 3, x == 6]
</syntaxhighlight>

=== 미분 방정식 ===
<syntaxhighlight lang="sage">
t = var('t') # define a variable t
x = function('x')(t) # define x to be a function of that variable
de = (diff(x, t) + x == 1)
desolve(de, [x, t]) # returns (c + e^t)*e^(-t)
</syntaxhighlight>

=== 선형 대수 ===
<syntaxhighlight lang="numpy">
A = matrix([[1, 2, 3], [3, 2, 1], [1, 1, 1]])
y = vector([0, -4, -1])
A.solve_right(y) # returns (-2, 1, 0)
A.eigenvalues() # returns [5, 0, -1]

B = matrix([[1, 2, 3], [3, 2, 1], [1, 2, 1]])
B.inverse() # returns
   [   0  1/2 -1/2]
   [-1/4 -1/4    1]
   [ 1/2    0 -1/2]

# same matrix, but over the ring of doubles (not rationals, as above)
sage: B = matrix(RDF, [[1, 2, 3], [3, 2, 1], [1, 2, 1]])
sage: B.inverse()

[-5.55111512313e-17                0.5               -0.5]
[             -0.25              -0.25                1.0]
[               0.5                0.0               -0.5]

# The Moore-Penrose pseudo-inverse
sage: C = matrix([[1 , 1], [2 , 2]])
sage: C.pseudoinverse()
[1/10  1/5]
[1/10  1/5]

# Alternatively, call NumPy for the pseudo-inverse
# (only numerical)
import numpy
C = matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C)) # returns
   [0.1 0.2]
   [0.1 0.2]
</syntaxhighlight>

=== 정수론 ===
<syntaxhighlight lang="sage">
prime_pi(1000000) # returns 78498, the number of primes less than one million

E = EllipticCurve('389a') # construct an elliptic curve from its Cremona label
P, Q = E.gens()
7 * P + Q # returns (24187731458439253/244328192262001 :
          # 3778434777075334029261244/3819094217575529893001 : 1)
</syntaxhighlight>

<syntaxhighlight lang="text">
sage: E2 = EllipticCurve(CC, [0,0,-2,1,1])
sage: E2
Elliptic Curve defined by y^2 + (-2.00000000000000)*y = 
         x^3 + 1.00000000000000*x + 1.00000000000000 over
         Complex Field with 53 bits of precision
sage: E2.j_invariant()
61.7142857142857
</syntaxhighlight>

=== 가환대수 ===

<syntaxhighlight lang="sage">
sage: P.<x, y, z> = PolynomialRing(QQ) # polynomial ring in x, y, z over the rationals
sage: (x**3 + y**3 + z**3 - 3*x*y*z).factor()
(x + y + z) * (x^2 - x*y + y^2 - x*z - y*z + z^2)

sage: I = P.ideal(x**2, x*y - y**2) # ideals defined by generators
sage: I.groebner_basis()
[y^3, x^2, x*y - y^2]
</syntaxhighlight>

== 같이 보기 ==
* [[매스잭스]]
== 각주 ==
{{각주}}

== 외부 링크 ==
* {{위키공용분류-줄}}
* [https://www.sagemath.org/ SageMath 공식 홈페이지]
* [https://sagecell.sagemath.org/ SageMath 웹 인터페이스]

{{컴퓨터 대수학 시스템}}

[[분류:리눅스용 컴퓨터 대수학 시스템 소프트웨어]]
[[분류:MacOS용 컴퓨터 대수학 시스템 소프트웨어]]
[[분류:윈도우용 컴퓨터 대수학 시스템 소프트웨어]]
[[분류:자유 컴퓨터 대수학 시스템]]
[[분류:자유 교육용 소프트웨어]]
[[분류:자유 수학 소프트웨어]]
[[분류:파이썬으로 작성된 자유 소프트웨어]]
[[분류:수학 소프트웨어]]