맨위로가기

SageMath

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SageMath는 윌리엄 스타인이 개발한 수학 소프트웨어로, 여러 오픈 소스 수학 소프트웨어 패키지를 파이썬 기반의 공통 인터페이스로 통합하여 사용자가 파이썬만으로 다양한 수학 계산을 할 수 있도록 한다. SageMath는 학생과 전문가의 자원 봉사 및 보조금으로 개발되었으며, 2005년 1.0 버전을 시작으로 2013년 ACM/SIGSAM 젠크스 상을 수상하는 등 성과를 거두었다. 주요 기능으로는 웹 인터페이스, 명령줄 인터페이스, 다양한 수학 연산, 그래프 그리기 등을 제공하며, 대수학, 정수론, 선형 대수 등 다양한 분야의 계산을 지원한다. SageMath는 GNU 일반 공중 사용 허가서에 따라 배포되는 자유 소프트웨어이며, 리눅스, macOS, Windows 등 다양한 운영체제에서 사용할 수 있다.

더 읽어볼만한 페이지

  • 자유 컴퓨터 대수학 시스템 - Xcas
    Xcas는 C++로 작성된 컴퓨터 대수 시스템으로, 수학적 계산, 스프레드시트, 프로그래밍 기능, 2/3차원 기하학, 통계, 방정식 풀이, 그래프 그리기, 미적분, 선형 대수 등을 지원하며 다양한 플랫폼에서 사용 가능한 다재다능한 도구이다.
  • 자유 컴퓨터 대수학 시스템 - GAP (컴퓨터 대수학 시스템)
    GAP은 계산 군론에 특화된 컴퓨터 대수학 시스템으로, 다양한 수학적 객체 생성 및 조작 함수 라이브러리를 제공하며 자유로운 배포와 확장이 가능하다.
  • 수학 소프트웨어 - 울프럼 리서치
    울프럼 리서치는 스티븐 울프럼이 설립한 미국의 기술 회사로, 울프럼 알파, 매스매티카, 울프럼 언어 등의 소프트웨어 개발과 온라인 리소스 운영, 기술 컨퍼런스 개최 등 다양한 활동을 한다.
  • 수학 소프트웨어 - 계산기 (애플)
    애플이 개발한 계산기 앱은 macOS, iOS, iPadOS, watchOS에서 제공되며, 1984년 Macintosh 128K에 처음 탑재된 이후 기능과 디자인이 지속적으로 개선되었고, iOS 18에서는 손글씨 수식 풀이 기능이, iPadOS 18에서는 아이패드에 최적화된 계산기 앱이 추가되었다.
  • 윈도우용 컴퓨터 대수학 시스템 소프트웨어 - 메이플 (소프트웨어)
    메이플은 Maplesoft에서 개발한 컴퓨터 대수 시스템 소프트웨어로, 기호 및 수치 계산, 시각화, 프로그래밍 기능을 제공하며 수학적 모델링, 시뮬레이션, 데이터 분석 등에 활용되어 교육 및 연구 개발 분야에서 널리 사용된다.
  • 윈도우용 컴퓨터 대수학 시스템 소프트웨어 - 맥시마 (소프트웨어)
    맥시마는 MIT에서 개발된 Macsyma를 기반으로 GPL 라이선스 하에 공개된 오픈 소스 컴퓨터 대수 시스템으로, 기호 연산, 임의 정밀도 연산, 프로그래밍 기능 등을 제공하며 프로그래밍 교육 및 컴퓨터 대수 교육용으로 활용 가능하다.
SageMath - [IT 관련 정보]에 관한 문서
일반 정보
로고
Jupyter Notebook 내부의 Sagemath 문서 (웹 브라우저)
발표일2005년 2월 24일
최신 평가판10.3.rc2
최신 평가판 발표일2024년 3월 4일
프로그래밍 언어Python, Cython
운영체제Linux, macOS, Microsoft Windows, Solaris, Android, iOS
플랫폼개인용 컴퓨터 및 웹 플랫폼
IA-32, x86-64, ARM, Itanium, SPARC
크기약 112–3319 MB
장르컴퓨터 대수 시스템
라이선스GPLv3
웹사이트공식 웹사이트

2. 역사

SageMath는 2005년 1월에 첫 번째 버전인 0.1이 릴리스 되었으며, PARI/GP에 대응되었지만 GAP과 Singular는 미대응이었다.[5] 이후 몇 주 또는 한 달 간격으로 새로운 버전을 릴리스하는 "얼리 릴리스, 잦은 릴리스" 방침을 따르고 있다.

SageMath의 주요 버전, 릴리스 날짜, 설명은 아래 표와 같다.

Sage 버전
버전릴리스 날짜설명
0.12005년 1월PARI/GP에 대응, GAP과 Singular는 미대응
0.2 - 0.42005년 3월 ~ 6월Cremona 데이터베이스, 다변수 다항식, 대규모 유한체, 문서 정리
0.5 - 0.72005년 8월 ~ 9월벡터, 환, 모듈러
0.82005년 10월GAP 풀 서포트, Singular 서포트
0.92005년 11월Maxima, clisp 추가
1.02006년 2월
2.02007년 1월
3.02008년 4월Interacts, R 인터페이스
4.02009년 5월Solaris 10 지원, 64bit OSX 지원
5.02012년 5월OSX Lion 지원
6.02013년 12월Sage의 개발은 Git로 이행
7.02016년 1월
8.02017년 7월



SageMath는 2007년 자유 소프트웨어 국제 대회인 Les Trophées du Libre 과학 소프트웨어 부문에서 1등을 수상했고,[8][25] 2012년에는 Google Summer of Code 프로젝트 중 하나로 선정되었으며,[9][26] 2013년에는 ACM/SIGSAM 젠크스 상을 수상했다.[10][27] 또한 SageMath는 많은 수학 논문과 책에서 인용되고 있다.[28][29]

2. 1. 개발 배경

윌리엄 스타인


윌리엄 스타인은 Sage를 설계하면서, 이미 여러 오픈 소스 수학 소프트웨어 패키지가 C, C++, Common Lisp, Fortran, 파이썬 등 서로 다른 프로그래밍 언어로 작성되었음을 깨달았습니다.[5]

Sage는 대부분 파이썬과 Cython으로 작성되었으며, 새로운 것을 만들기보다는, 많은 전문적인 CAS 소프트웨어 패키지를 공통 인터페이스에 통합하여 사용자가 파이썬만 알면 되도록 하였습니다. 하지만 Sage는 새로운 함수를 추가하고 구성 요소 간의 인터페이스를 생성하는 수십만 줄의 고유한 소스 코드를 포함하고 있습니다.[5]

SageMath는 학생과 전문가 모두를 개발에 활용하며, 자원 봉사 활동과 보조금으로 개발이 지원됩니다.[6] 2016년이 되어서야 EU 보조금으로 자금을 조달받은 첫 번째 전임 Sage 개발자가 고용되었습니다.[7] 같은 해, 스타인은 소프트웨어 개발에 대한 학술적 자금 지원과 자격 부족에 대한 실망감을 표현하며, 자신의 종신 교수직을 떠나 새롭게 설립된 회사인 SageMath, Inc.에서 프로젝트에 전적으로 참여하기로 결정했습니다.[7]

윌리엄 스타인은 설계를 진행하며 다음 요소를 포함했습니다.

  • 매그마, 메이플, 매스매티카, MATLAB의 대항마가 될 현실적으로 의미 있는 소프트웨어를 만드는 것입니다. 이를 처음부터 시작하려면 막대한 노력이 필요할 것으로 예상되었습니다.
  • 당시 이미 다수의 실용적인 수학 관련 소프트웨어가 오픈 소스로 제공되었지만, 각기 다른 프로그래밍 언어(C, C++, 포트란, 파이썬 등이 많았다)로 구현되어 있었습니다.


SageMath는 목표로 하는 소프트웨어를 처음부터 작성하는 대신, 파이썬과 사이썬을 사용하여 다양한 수학 관련 소프트웨어를 통합하여 하나의 인터페이스에서 사용할 수 있도록 하는 것을 목표로 했습니다. 파이썬은 매우 많은 애플리케이션에서 사용되는 언어이며, SageMath 사용자는 파이썬만 알면 됩니다.

SageMath 개발 동기는 이를 실현하기 위한 오픈 소스 구현이 아직 없었기 때문입니다. SageMath는 바퀴의 재발명과는 다릅니다. 예를 들어 매스매티카는 비슷한 개발 방침으로 만들어졌지만, 상용 소프트웨어는 소스 공개가 의무화된 소프트웨어를 사용할 수 없습니다. Sage는 그러한 제한이 없으며, 그만큼 광범위한 분야의 소프트웨어를 이용할 수 있습니다.

SageMath의 개발에는 학생과 직업 연구자 모두 관여하고 있습니다. 또한 자원 개발 노력과 더불어, 보조금에 의한 지원도 받고 있습니다.[24]

2. 2. 개발 과정



스타인은 Sage를 설계하면서, 이미 여러 오픈 소스 수학 소프트웨어 패키지가 서로 다른 프로그래밍 언어로 작성되었음을 깨달았다. 예를 들어 C, C++, Common Lisp, Fortran 및 파이썬 등이 있었다.

Sage (대부분 파이썬과 Cython으로 작성됨)는 새로운 것을 만들기보다는, 많은 전문적인 CAS 소프트웨어 패키지를 공통 인터페이스에 통합하여, 사용자는 파이썬만 알면 되도록 하였다. 하지만 Sage는 새로운 함수를 추가하고 구성 요소 간의 인터페이스를 생성하는 수십만 줄의 고유한 소스 코드를 포함하고 있다.[5]

SageMath는 학생과 전문가 모두를 개발에 활용한다. SageMath의 개발은 자원 봉사 활동과 보조금으로 지원된다.[6] 그러나 2016년이 되어서야 첫 번째 전임 Sage 개발자가 고용되었다 (이는 EU 보조금으로 자금이 조달되었다).[7] 같은 해, 스타인은 소프트웨어 개발에 대한 학술적 자금 지원과 자격 부족에 대한 실망감을 표현하며, 그 이유로 자신의 종신 교수직을 떠나 새롭게 설립된 회사인 SageMath, Inc.에서 프로젝트에 전적으로 참여하기로 결정했다고 밝혔다.[7]

SageMath의 릴리스 방침은 "얼리 릴리스, 잦은 릴리스"이며, 몇 주 또는 한 달 간격으로 릴리스되고 있다. 주요 버전은 다음과 같다.

Sage 버전
버전릴리스 날짜설명
0.12005년 1월PARI/GP에 대응, 하지만 GAP과 Singular는 미대응
0.2 - 0.42005년 3월 ~ 6월Cremona 데이터베이스, 다변수 다항식, 대규모 유한체, 문서 정리
0.5 - 0.72005년 8월 ~ 9월벡터, 환, 모듈러
0.82005년 10월GAP 풀 서포트, Singular 서포트
0.92005년 11월Maxima, clisp 추가
1.02006년 2월
2.02007년 1월
3.02008년 4월Interacts, R 인터페이스
4.02009년 5월Solaris 10 지원, 64bit OSX 지원
5.02012년 5월OSX Lion 지원
6.02013년 12월Sage의 개발은 Git로 이행
7.02016년 1월
8.02017년 7월


2. 3. 성과


  • 2007년: 자유 소프트웨어 국제 대회인 Les Trophées du Libre 과학 소프트웨어 부문에서 1등을 수상했다.[8][25]
  • 2012년: Google Summer of Code 프로젝트 중 하나로 선정되었다.[9][26]
  • 2013년: ACM/SIGSAM 젠크스 상을 수상했다.[10][27]
  • SageMath는 많은 수학 논문과 책에서 인용되고 있다.[28][29]

3. 특징


  • Firefox, Opera, Konqueror, Safari 등 많은 웹 브라우저에서 이용 가능한 노트북 형식의 대화형 인터페이스를 제공한다. 이를 통해 이전 입력을 확인하거나 다시 사용하기 쉽고, 문자 입출력과 이미지를 모두 처리할 수 있다. HTTPS 접속을 지원하며, Sage의 노트북은 네트워크를 통해서나 로컬에서도 다룰 수 있다.
  • IPython 기반 명령줄 인터페이스를 제공한다.
  • Python을 도입하여 절차형, 함수형, 객체 지향 프로그래밍을 모두 지원한다.
  • Maxima와 SymPy를 사용한 계산을 지원한다.
  • 슬라이더 등 직관적인 조작을 갖춘 GUI를 제공한다.[20]
  • 사용자 인터페이스 추가 툴킷을 제공한다.
  • 데이터, 이미지, 동영상, 음성, CAD, GIS, 워드 프로세서 문서, 의용 데이터 형식의 입출력을 지원한다.
  • 수식 표시와 LaTeX 문서 삽입을 지원한다.[21]
  • Twisted를 이용한 네트워크 경유 SQL, Java, .NET Framework, C++, FORTRAN 이용 툴을 제공한다. (이를 통해 HTTP, NNTP, IMAP, SSH, IRC, FTP 이용 가능)
  • 외부 소프트웨어 (Mathematica, Magma, Maple 등)를 SageMath에서 호출하여 처리 결과 및 실행 속도를 비교하는 기능을 제공한다. (GNU TeXmacs와 같이 외부 소프트웨어에 대한 프런트 엔드로 SageMath를 이용 가능)
  • 정보 집약을 위한 위키 시스템으로 MoinMoin을 갖추고 있다.
  • 사용자가 이용 가능한 테스트 자동 실행 환경을 제공한다.
  • FORTRAN, C, C++, Cython 코드 실행을 지원한다.
  • SMP 등 멀티 코어CPU 환경에서의 병렬 실행 및 분산 컴퓨팅 환경에서의 병렬 계산을 지원한다.
  • GNU Scientific Library, SciPy, NumPy를 사용한 선형 대수 수치 계산을 지원한다.
  • 초등 함수 및 특수 함수 라이브러리를 제공한다.
  • 행렬 및 벡터 연산(희소 행렬 대응)을 지원한다.
  • R과 SciPy를 이용한 다변량 해석을 지원한다.
  • Python과 마찬가지로 pylab을 이용한 이미지 해석 도구를 제공한다.
  • 수론 함수 라이브러리를 제공한다.
  • 복소수, 다배정 계산, 기호 계산을 지원한다.
  • 데이터 및 함수의 2D 및 3D 플롯 기능을 제공한다.
  • 그래프(노드와 링크로 구성)의 시각화 및 분석 기능을 제공한다.


SageMath가 직접 제공하는 기능은 아니지만, Mathematica에서 SageMath를 호출하여 이용할 수 있다.[22] 이를 위한 Mathematica 노트북이 준비되어 있다.[23]

4. 포함된 소프트웨어 패키지

SageMath는 기존 라이브러리를 활용하는 철학을 바탕으로 다양한 소프트웨어 패키지를 포함한다.[16] 이는 수학 및 기타 기능 패키지를 모두 아우른다.

수학 기능 패키지로는 대수학 분야의 GAP, Singular, FLINT, 대수 기하학 분야의 Singular, 임의 정밀 산술 분야의 GMP, MPFR, MPFI, NTL, mpmath, Arb 등이 있다. 산술 기하학 분야에는 PARI/GP, NTL, mwrank, ECM이, 미적분학 분야에는 Maxima, SymPy, GiNaC, Giac, FriCAS가 포함된다. 조합론 분야는 Symmetrica, Sage-Combinat, 선형대수학 분야는 ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL을 포함한다. 그래프 이론 분야는 NetworkX, 군론 분야는 GAP, 수치 계산 분야는 GSL, SciPy, NumPy, ATLAS, 수론 분야는 PARI/GP, FLINT, NTL, 통계 계산 분야는 R, SciPy를 활용한다.

기타 기능 패키지로는 명령줄 셸IPython, 데이터베이스인 ZODB, SQLite, 그래픽 인터페이스인 SageMath 노트북, MathJax[17] (이전 jsMath)가 있다. 그래픽 관련 패키지로는 matplotlib, Tachyon, GD, Jmol이 있으며, 대화형 프로그래밍 언어로는 Python, 네트워킹에는 Twisted가 사용된다. 미분 기하학 및 텐서 미적분학을 위한 Sage Manifolds도 포함되어 있다.

4. 1. 수학 기능 패키지

SageMath는 다양한 수학 분야의 기능을 제공하며, 이를 위해 여러 오픈 소스 라이브러리를 활용한다. SageMath의 철학은 기존에 존재하는 라이브러리를 최대한 활용하는 것이기 때문에, 다른 프로젝트의 많은 라이브러리를 사용한다.[16]

다음은 SageMath에 포함되거나 SageMath에서 사용할 수 있는 주요 수학 기능 패키지 목록이다.

SageMath에 포함된 패키지[16]
분야패키지
대수학GAP, Singular, FLINT
대수 기하학Singular
임의 정밀 산술GMP, MPFR, MPFI, NTL, mpmath, Arb
산술 기하학PARI/GP, NTL, mwrank, ECM
미적분학Maxima, SymPy, GiNaC, Giac, FriCAS
조합론Symmetrica, Sage-Combinat
선형대수학ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL
그래프 이론NetworkX
군론GAP
수치 계산GSL, SciPy, NumPy, ATLAS
수론PARI/GP, FLINT, NTL
통계 계산R, SciPy
기타 패키지
명령줄 셸IPython
데이터베이스ZODB, SQLite
그래픽 인터페이스SageMath 노트북, MathJax[17] (이전 jsMath)
그래픽matplotlib, Tachyon, GD, Jmol
대화형 프로그래밍 언어Python
네트워킹Twisted
미분 기하학 및 텐서 미적분학Sage Manifolds


4. 2. 기타 기능 패키지

SageMath는 기존의 라이브러리를 활용하는 철학을 가지고 있어, 다른 프로젝트의 많은 라이브러리를 사용한다.[16]

SageMath에 포함된 기타 패키지
명령줄 셸IPython
데이터베이스ZODB, SQLite
그래픽 인터페이스SageMath 노트북, MathJax[17] (이전 jsMath)
그래픽matplotlib, Tachyon, GD, Jmol
대화형 프로그래밍 언어Python
네트워킹Twisted


5. 사용 예제

SageMath는 웹 브라우저를 통해 노트북 형식으로 사용할 수 있는 인터페이스를 제공하며, IPython을 사용한 명령줄 인터페이스도 지원한다.[19] 또한, Maxima와 SymPy를 사용한 계산을 지원하며, 슬라이더 등을 활용한 직관적인 GUI도 제공한다.[20]

thumb

SageMath는 다음과 같은 다양한 기능을 제공한다.


  • 프로그래밍: Python 문법을 기반으로 절차형, 함수형, 객체 지향 프로그래밍을 모두 지원한다.
  • 계산 지원: Maxima, SymPy를 이용한 계산을 지원한다.
  • GUI: 슬라이더 등을 활용한 직관적인 GUI를 제공한다.[20]
  • 데이터 처리: 데이터, 이미지, 동영상, 음성, CAD, GIS 등 다양한 형식의 데이터를 입출력할 수 있다.
  • 수식 표현: LaTeX를 이용하여 수식을 표현하고 문서를 삽입할 수 있다.[21]
  • 네트워크: Twisted를 이용하여 SQL, Java, .NET Framework, C++, FORTRAN 등 다양한 네트워크 프로그래밍을 지원한다.
  • 외부 소프트웨어 연동: Mathematica, Magma, Maple 등 외부 소프트웨어를 SageMath에서 호출하여 결과를 비교하거나, GNU TeXmacs와 같이 외부 소프트웨어의 프런트 엔드로 SageMath를 활용할 수 있다.
  • 병렬 처리: SMP 등 멀티 코어CPU 환경 및 분산 컴퓨팅 환경에서의 병렬 계산을 지원한다.
  • 수치 계산: GNU Scientific Library, SciPy, NumPy를 이용한 선형 대수 수치 계산을 지원한다.
  • 함수 라이브러리: 초등 함수 및 특수 함수 라이브러리를 제공한다.
  • 행렬 및 벡터 연산: 희소 행렬을 포함한 행렬 및 벡터 연산을 지원한다.
  • 다변량 해석: R과 SciPy를 이용한 다변량 해석을 지원한다.
  • 이미지 해석: pylab을 이용한 이미지 해석 도구를 제공한다.
  • 수론 함수: 수론 관련 함수 라이브러리를 제공한다.
  • 복소수 및 정밀도: 복소수, 다배정 계산, 기호 계산을 지원한다.
  • 그래프: 데이터 및 함수의 2D, 3D 플롯, 그래프 시각화 및 분석 기능을 제공한다.


SageMath는 Mathematica에서도 호출하여 사용할 수 있으며, 이를 위한 Mathematica 노트북도 제공된다.[22][23]

5. 1. 대수 및 미적분

SageMath는 대수 및 미적분 계산을 위한 다양한 기능을 제공한다.

  • 로그, 삼각함수:
  • `log(sqrt(a)).simplify_log()`: 로그의 성질을 이용하여 식을 간단하게 만든다.
  • `log(a / b).expand_log()`: 로그의 성질을 이용하여 식을 전개한다.
  • `sin(a + b).simplify_trig()`, `cos(a + b).simplify_trig()`: 삼각함수의 덧셈정리를 이용하여 식을 간단하게 만든다.
  • 다항식 전개:
  • `(a + b)^5`: 주어진 식을 그대로 반환한다.
  • `expand((a + b) ^ 5)`: 이항정리를 이용하여 다항식을 전개한다.
  • 극한:
  • `limit((x ^ 2 + 1) / (2 + x + 3 * x ^ 2), x=Infinity)`: x가 무한대로 갈 때의 극한값을 계산한다.
  • `limit(sin(x) / x, x=0)`: x가 0으로 갈 때의 극한값을 계산한다.
  • 미분:
  • `diff(acos(x), x)`: 아크코사인 함수를 미분한다.
  • `f = exp(x) * log(x); f.diff(x, 3)`: 함수 f를 x에 대해 3번 미분한다.
  • 방정식 풀이:
  • `solve(a * x ^ 2 + b * x + c, x)`: 이차방정식의 해를 구한다.
  • `f = x ^ 2 + 432 / x; solve(f.diff(x) == 0, x)`: 함수의 도함수가 0이 되는 x값을 찾는다. (극값)


```python

x, a, b, c = var('x, a, b, c')

log(sqrt(a)).simplify_log() # 1/2*log(a) 반환

log(a / b).expand_log() # log(a) - log(b) 반환

sin(a + b).simplify_trig() # sin(a)*cos(b) + sin(b)*cos(a) 반환

cos(a + b).simplify_trig() # -sin(a)*sin(b) + cos(a)*cos(b) 반환

(a + b)^5 # (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) # 1/3 반환

limit(sin(x) / x, x=0) # 1 반환

diff(acos(x), x) # -1/sqrt(-x^2 + 1) 반환

f = exp(x) * log(x)

f.diff(x, 3) # 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) # [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) # [x == 3*I*sqrt(3) - 3,

# x == -3*I*sqrt(3) - 3, x == 6] 반환

5. 2. 미분 방정식

SageMath에서 미분 방정식은 다음과 같이 풀 수 있다.

```sage

t = var('t') # 변수 t 정의

x = function('x')(t) # x를 t의 함수로 정의

de = (diff(x, t) + x == 1)

desolve(de, [x, t]) # (c + e^t)*e^(-t) 반환

```

먼저, 변수 `t`를 정의하고, `x`를 `t`의 함수로 정의한다. 그 후, 미분 방정식 `de`를 정의하고 `desolve` 함수를 사용하여 해를 구한다. 위 코드에서 `desolve(de, [x, t])`는 `(c + e^t)*e^(-t)`를 반환한다.

다음은 Python 람다 함수를 사용한 예시이다.

```python

t = var('t') # 변수 t 정의

x = function('x',t) # x를 t의 함수로 정의

DE = lambda y: diff(y,t) + y - 1

desolve(DE(x(t)), [x,t]) # '%e^-t*(%e^t+%c)' 반환

```

람다 함수 `DE`를 정의하여 미분 방정식을 표현하고, `desolve` 함수를 사용하여 해를 구한다. 이 코드는 `'%e^-t*(%e^t+%c)'`를 반환한다.

5. 3. 선형 대수

SageMath에서 선형 대수 연산은 다음과 같이 수행할 수 있다.

```python

A = matrix(1, 2, 3], [3, 2, 1], [1, 1, 1)

y = vector([0, -4, -1])

A.solve_right(y) # (-2, 1, 0) 반환

A.eigenvalues() # [5, 0, -1] 반환

B = matrix(1, 2, 3], [3, 2, 1], [1, 2, 1)

B.inverse() # 아래 반환

# [ 0 1/2 -1/2]

# [-1/4 -1/4 1]

# [ 1/2 0 -1/2]

# 실수를 원소로 하는 같은 행렬

B = matrix(RDF, 1, 2, 3], [3, 2, 1], [1, 2, 1)

B.inverse() # 아래 반환

# [-5.55111512313e-17 0.5 -0.5]

# [ -0.25 -0.25 1.0]

# [ 0.5 0.0 -0.5]

# 무어-펜로즈 유사역행렬

C = matrix(1 , 1], [2 , 2)

C.pseudoinverse() # 아래 반환

# [1/10 1/5]

# [1/10 1/5]

# NumPy를 이용한 유사역행렬 계산 (수치 연산만 가능)

import numpy

C = matrix(1 , 1], [2 , 2)

matrix(numpy.linalg.pinv(C)) # 아래 반환

# [0.1 0.2]

# [0.1 0.2]

```

행렬 A를 만들고, 벡터 y에 대해 `Ax = y` 를 만족하는 x를 구하거나(`solve_right`), 고유값(`eigenvalues`)을 계산할 수 있다. 또한, 행렬 B의 역행렬(`inverse`)을 구하거나, 무어-펜로즈 유사역행렬(`pseudoinverse`)을 계산할 수 있다. SageMath에서 지원하지 않는 기능은 NumPy를 이용하여 계산할 수도 있다.

5. 4. 정수론

SageMath는 정수론 연구를 위한 다양한 기능을 제공한다.

  • 100만 미만의 소수 개수를 구하는 함수:



prime_pi(1000000) # 100만 미만의 소수의 개수인 78498을 반환합니다.


  • 크레모나 레이블(Cremona label)을 이용해 타원 곡선을 구성하는 기능:



E = EllipticCurve('389a') # 크레모나 레이블에서 타원 곡선을 구성합니다.


  • 타원 곡선 위의 점 연산:



P, Q = E.gens()

7*P + Q # (2869/676 : -171989/17576 : 1)을 반환합니다.




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


6. 성능

SageMath는 이진 파일소스 코드를 모두 다운로드 페이지에서 사용할 수 있다. SageMath를 소스 코드에서 빌드하는 경우, OpenBLAS, FLINT, GAP (컴퓨터 대수 시스템), NTL과 같은 포함된 많은 라이브러리가 해당 컴퓨터에 맞게 조정되고 최적화된다. 이 과정에서 프로세서의 수, 캐시의 크기, SSE 명령에 대한 하드웨어 지원 여부 등을 고려한다.

Cython은 Python 코드를 C로 변환하므로 SageMath 프로그램의 속도를 높일 수 있다.[11] SageMath 개발자들은 실질적인 성능 향상에 주력하고 있으며, 일부는 세계 최고 속도를 목표로 하고 있다.

7. 라이선스 및 가용성

SageMath는 자유 소프트웨어이며, GNU 일반 공중 사용 허가서 버전 3의 조건에 따라 배포된다.[1]

SageMath 10.0 (2023년 5월)은 Hyper-V 클라이언트로 실행하려면 Windows가 필요하며, 버전 2의 Linux용 Windows 하위 시스템을 필요로 한다.[12] OpenDreamKit 프로젝트의 자금 지원을 받아 개발된 SageMath 8.0 (2017년 7월)은 Cygwin에서 성공적으로 빌드되었으며, 64비트 버전의 Windows용 바이너리 설치 프로그램이 제공되었다.[13] Microsoft가 SageMath의 Windows 버전을 후원했지만, 2016년 이전에 Windows 사용자는 SageMath를 실행하기 위해 가상화 기술 (예: VirtualBox)을 사용해야 했다.[14]

SageMath가 패키지로 제공되는 리눅스 배포판은 페도라, 아치 리눅스, 데비안, 우분투NixOS이다. 젠투에서는 "sage-on-gentoo"[15] 오버레이의 layman을 통해 사용할 수 있다. NixOS에서 사용되는 패키지는 패키지 관리자 Nix의 배포판에 독립적인 특성으로 인해 다른 배포판에서도 사용할 수 있다.

젠투 접두사는 다른 운영 체제에서도 Sage를 제공한다. SageMath는 GNU 일반 공중 사용 허가서 버전 2+에 따라 사용, 배포할 수 있는 자유 소프트웨어이다. 입수 방법은 여러 가지가 있다.


  • 소스 코드는 [http://www.sagemath.org/download.html 다운로드 페이지]에서 다운로드할 수 있다. 개발자용으로 개발 중인 버전도 다운로드할 수 있다.
  • Linux, macOS, Solaris(x86 및 SPARC 모두)에 대해서는 바이너리가 준비되어 있다. Solaris 버전은 시험적인 제공이다.
  • Linux 부팅 가능한 CD로도 배포되고 있다. 이것을 사용하면 SageMath 설치 작업을 하지 않고 사용할 수 있다.
  • Sage 온라인 버전도 [http://demo.sagenb.org http://demo.sagenb.org]에서 제공되고 있다. 그러나 기술적인 이유로 사용자가 이용할 수 있는 메모리 크기, 보안 측면에 제한이 있다.

  • Windows에서는 WSL 위에서 실행한다. (Sage 8.0 이후부터 Windows 네이티브 버전이 출시되었지만, 9.7에서 폐지되었다.)

참조

[1] 웹사이트 COPYING.txt – sage.git https://git.sagemath[...] The Sage Repository 2017-04-04
[2] 웹사이트 SAGE: A Computer System for Algebra and Geometry Experimentation http://wstein.org/sa[...] 2012-03-30
[3] 웹사이트 Sage Days 4 https://www.sagemath[...] 2007-06-12
[4] 서적 Numerical Analysis Using Sage https://drive.google[...] Springer
[5] 웹사이트 Sage Days 7: Combinatorics http://wiki.sagemath[...] 2008-11-14
[6] 웹사이트 Sage – Acknowledgement to Supporters https://www.sagemath[...] 2017-01-06
[7] 문서 The origins of SageMath – creating a viable open source alternative to Magma, Maple, Mathematica, and Matlab http://wstein.org/ta[...] 2016-06-11
[8] 웹사이트 Free Software Brings Affordability, Transparency To Mathematics https://www.scienced[...] Science Daily 2017-01-06
[9] 웹사이트 Sage Mathematical Software System https://www.google-m[...] 2017-01-06
[10] 웹사이트 Richard Dimick Jenks Memorial Prize 2013 Award http://www.sigsam.or[...] 2017-01-06
[11] 웹사이트 Cython, Sage, and the Need for Speed http://sagemath.blog[...] 2017-01-06
[12] 웹사이트 Welcome to Sage Installation Guide https://doc.sagemath[...] 2023-07-28
[13] 웹사이트 SageMath 8.0 installer for Windows https://groups.googl[...] 2017-08-28
[14] 웹사이트 Re: Question about Sage https://groups.googl[...] 2017-01-06
[15] 웹사이트 sage-on-gentoo Wiki https://github.com/c[...] 2017-01-06
[16] 웹사이트 Standard Packages http://doc.sagemath.[...] 2017-01-06
[17] 웹사이트 External Packages — External Packages https://doc.sagemath[...]
[18] 웹사이트 SAGE Days 4 http://www.sagemath.[...] 2007-06-12
[19] 문서 Sage documentation http://www.sagemath.[...]
[20] 웹사이트 Sage Interact functionality http://wiki.sagemath[...] 2008-04-11
[21] 문서 The TeX Catalogue OnLine, Entry for sagetex, Ctan Edition http://www.ctan.org/[...]
[22] 문서 Calling Sage from Mathematica http://facstaff.unca[...]
[23] 문서 A Mathematica notebook to call Sage from Mathematica. http://facstaff.unca[...]
[24] 웹사이트 Explicit Approaches to Modular Forms and Modular Abelian Varieties http://www.nsf.gov/a[...] National Science Foundation 2006-04-14
[25] 웹사이트 Free Software Brings Affordability, Transparency To Mathematics http://www.scienceda[...] Science Daily 2007-12-07
[26] 웹사이트 Sage Mathematical Software System http://www.google-me[...] 2012-06-09
[27] 웹사이트 SIGSAM: Awards and prizes http://www.sigsam.or[...] 2013-08-02
[28] 웹사이트 Publications Citing Sage http://www.sagemath.[...] 2011-07-14
[29] 웹사이트 Publications Citing Sage-Combinat http://www.sagemath.[...] 2011-07-14
[30] 웹인용 SAGE: A Computer System for Algebra and Geometry Experimentation http://wstein.org/sa[...] 2012-03-30
[31] 웹인용 Sage Days 4 https://www.sagemath[...] 2007-06-12



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com