맨위로가기

GAP (컴퓨터 대수학 시스템)

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

1. 개요

GAP는 1986년부터 개발되어 온 컴퓨터 대수학 시스템으로, 수학적 객체를 생성하고 조작하기 위한 절차적 프로그래밍 언어와 다양한 함수들을 제공한다. 유한군, 행렬, 유한체, 환, 가군, 리 대수 등을 지원하며, 카피레프트 조건에 따라 무료로 배포된다. 윈도우, 유닉스, 매킨토시 등 다양한 운영체제에서 작동하며, 사용자 기여 패키지를 통해 기능을 확장할 수 있다. GAP는 터미널 환경에서 실행되며, 명령 프롬프트에서 명령어를 입력하여 사용할 수 있다.

더 읽어볼만한 페이지

  • 자유 컴퓨터 대수학 시스템 - SageMath
    SageMath는 윌리엄 스타인이 개발한 파이썬 기반의 수학 소프트웨어로, 다양한 오픈 소스 수학 패키지를 통합하여 여러 분야의 수학 계산을 지원하며, GNU 일반 공중 사용 허가서에 따라 배포되는 자유 소프트웨어이다.
  • 자유 컴퓨터 대수학 시스템 - Xcas
    Xcas는 C++로 작성된 컴퓨터 대수 시스템으로, 수학적 계산, 스프레드시트, 프로그래밍 기능, 2/3차원 기하학, 통계, 방정식 풀이, 그래프 그리기, 미적분, 선형 대수 등을 지원하며 다양한 플랫폼에서 사용 가능한 다재다능한 도구이다.
  • 윈도우용 컴퓨터 대수학 시스템 소프트웨어 - 메이플 (소프트웨어)
    메이플은 Maplesoft에서 개발한 컴퓨터 대수 시스템 소프트웨어로, 기호 및 수치 계산, 시각화, 프로그래밍 기능을 제공하며 수학적 모델링, 시뮬레이션, 데이터 분석 등에 활용되어 교육 및 연구 개발 분야에서 널리 사용된다.
  • 윈도우용 컴퓨터 대수학 시스템 소프트웨어 - 맥시마 (소프트웨어)
    맥시마는 MIT에서 개발된 Macsyma를 기반으로 GPL 라이선스 하에 공개된 오픈 소스 컴퓨터 대수 시스템으로, 기호 연산, 임의 정밀도 연산, 프로그래밍 기능 등을 제공하며 프로그래밍 교육 및 컴퓨터 대수 교육용으로 활용 가능하다.
  • MacOS용 컴퓨터 대수학 시스템 소프트웨어 - 메이플 (소프트웨어)
    메이플은 Maplesoft에서 개발한 컴퓨터 대수 시스템 소프트웨어로, 기호 및 수치 계산, 시각화, 프로그래밍 기능을 제공하며 수학적 모델링, 시뮬레이션, 데이터 분석 등에 활용되어 교육 및 연구 개발 분야에서 널리 사용된다.
  • MacOS용 컴퓨터 대수학 시스템 소프트웨어 - 맥시마 (소프트웨어)
    맥시마는 MIT에서 개발된 Macsyma를 기반으로 GPL 라이선스 하에 공개된 오픈 소스 컴퓨터 대수 시스템으로, 기호 연산, 임의 정밀도 연산, 프로그래밍 기능 등을 제공하며 프로그래밍 교육 및 컴퓨터 대수 교육용으로 활용 가능하다.
GAP (컴퓨터 대수학 시스템) - [IT 관련 정보]에 관한 문서
일반 정보
이름GAP (Groups, Algorithms, Programming)
개발자세인트앤드루스 대학교
아헨 공과대학교
브라운슈바이크 공과대학교
콜로라도 주립 대학교
카이저슬라우테른 공과대학교
최초 출시1988년
최신 버전4.14.0
최신 버전 출시일2024년 4월 24일
프로그래밍 언어C
운영 체제크로스 플랫폼
종류컴퓨터 대수학 시스템
라이선스GNU 일반 공중 사용 허가서
웹사이트GAP System for Computational Discrete Algebra

2. 역사

GAP는 1986년부터 1997년까지 독일 아헨 공과대학교(Rheinisch-Westfälische Technische Hochschule Aachen)의 수학과 D Lehrstuhl (LDFM)에서 개발되었다.[1] 요아힘 노이뷔서(Joachim Neubüser)가 LDFM 의장직에서 물러난 후, GAP의 개발 및 유지는 스코틀랜드세인트앤드루스 대학교의 수학 및 전산 과학부에서 조정했다.[1] 2005년 여름, 조정은 세인트앤드루스 대학교, 아헨 공과대학교, 브라운슈바이크 공과대학교(Technische Universität Braunschweig), 콜로라도 주립 대학교(Colorado State University, 포트 콜린스)에 위치한 4개의 'GAP 센터'의 동등한 파트너십으로 이전되었다.[2] 2020년 4월에는 카이저슬라우테른 공과대학교(TU Kaiserslautern)에 위치한 다섯 번째 GAP 센터가 추가되었다.[2]

3. 특징

GAP은 절차적 프로그래밍 언어와 다양한 수학적 객체를 생성하고 조작하기 위한 방대한 함수 모음을 포함하고 있다. 메모리가 허용하는 한 임의 크기의 정수와 유리수를 지원한다. 유한군은 순열 그룹으로 정의할 수 있으며, 생성자와 관계를 지정하여 유한 표시군을 정의하는 것도 가능하다. 중요한 유한군의 여러 데이터베이스가 포함되어 있다. GAP을 사용하면 행렬 및 유한체 (콘웨이 다항식을 사용하여 표현됨)를 사용할 수 있다. , 가군 및 리 대수도 지원된다.

4. 배포

GAP와 소스 코드, 패키지(사용자 기여 프로그램 집합), 데이터 라이브러리(작은 군 목록 포함), 매뉴얼은 카피레프트 조건에 따라 무료로 배포된다. GAP는 윈도우, 유닉스 계열 시스템, 매킨토시 등 다양한 운영체제에서 작동한다. 표준 배포판은 약 300MB의 공간을 필요로 하며, 모든 패키지를 로드할 경우 약 400MB가 필요하다. GAP 실행에는 128MB RAM이면 충분하다.

5. 사용자 기여 패키지

사용자 기여 패키지는 시스템의 중요한 기능으로, 많은 기능을 추가한다. GAP는 패키지 저자에게 동료 심사 과정을 거쳐 패키지의 품질을 개선하고 학술 출판과 유사한 인정을 받을 기회를 제공한다. 2021년 3월 기준, GAP와 함께 151개의 패키지가 배포되며, 그 중 약 71개가 동료 심사 과정을 거쳤다.[1]

6. 외부 인터페이스

GAP은 SINGULAR 컴퓨터 대수학 시스템을 사용하는 인터페이스를 제공한다.[3] 또한 수학 소프트웨어 시스템 SageMath에도 GAP이 포함되어 있다.[3]

7. 샘플 세션

GAP는 터미널 에뮬레이터나 DOS 프롬프트에서 실행되며, `gap>` 프롬프트에서 명령을 받는다. 명령문은 세미콜론(`;`)으로 끝나며, 두 개의 세미콜론(`;;`)을 사용하면 출력 결과를 억제할 수 있다. `quit;` 또는 Ctrl-D를 입력하여 GAP를 종료할 수 있다.

탭 키를 사용하여 키워드를 자동 완성할 수 있으며, 화살표 키를 사용하여 이전에 입력한 명령문을 편집하고 재입력할 수 있다. 마지막으로 입력된 명령문의 출력 결과는 `last` 변수에 저장된다. `#` 이후의 문자열은 주석으로 처리된다. `:=`를 사용하여 변수에 값을 할당한다.

`LoadTo("file1.log");`와 같이 로그를 파일에 저장할 수 있고, `Load("sonata");`와 같이 패키지를 로드할 수 있다. 내장 함수는 대문자로 시작하므로, 사용자 정의 함수나 변수는 소문자로 시작하여 이름 충돌을 피할 수 있다.

7. 1. 순열군 예제

GAP에서 순열군(Permutation Group)을 다루는 예시는 다음과 같다.

```gap-console

gap> G := SmallGroup(8,1); # G를 크기가 8인 군 중에서 GAP 목록의 첫 번째 군으로 설정한다.

<크기 8의 pc 군, 생성자 3개>

gap> i := IsomorphismPermGroup(G); # G에서 순열군으로의 동형 사상을 찾아서 i에 할당한다.

<작용 동형 사상>

gap> Image(i, G); # 동형사상 i에 대한 G의 이미지를 생성하는 순열들을 보여준다.

Group([ (1,5,3,7,2,6,4,8), (1,3,2,4)(5,7,6,8), (1,2)(3,4)(5,6)(7,8) ])

gap> Elements(Image(i, G)); # Image(i,G)의 모든 원소를 보여준다. 이 원소들은 순열로 표현된다.

[ (), (1,2)(3,4)(5,6)(7,8), (1,3,2,4)(5,7,6,8), (1,4,2,3)(5,8,6,7),

(1,5,3,7,2,6,4,8), (1,6,3,8,2,5,4,7), (1,7,4,5,2,8,3,6), (1,8,4,6,2,7,3,5) ]

```

  • `G:=SmallGroup(8,1);` 명령은 크기가 8인 군 중에서 GAP 목록에서 첫 번째 군을 G로 설정한다.
  • `i:=IsomorphismPermGroup(G);` 명령은 G에서 순열군으로 가는 동형 사상을 찾아서 i에 할당한다.
  • `Image(i,G);`는 동형사상 i에 대한 G의 이미지(image)를 생성하는 순열들을 보여준다.
  • `Elements(Image(i,G));`는 `Image(i,G)`의 모든 원소를 보여준다.

7. 2. 유클리드 환 예제

GAP은 유클리드 정역에서의 연산을 지원한다. 다음은 `Integers`, `Rationals`, `GaussianIntegers`, `GaussianRationals` 등 다양한 환에 대해 `EuclideanDegree`, `EuclideanQuotient`, `EuclideanRemainder`, `QuotientRemainder` 함수가 올바르게 작동하는지 확인하는 예제이다.

```gap

gap> # 표수가 0인 링

gap> checkEuclideanRing(Integers,[-100..100],[-100..100]);

true

gap> checkEuclideanRing(Rationals);

true

gap> checkEuclideanRing(GaussianIntegers);

true

gap> checkEuclideanRing(GaussianRationals);

true

gap> # 유한체

gap> ForAll(Filtered([2..50], IsPrimePowerInt), q->checkEuclideanRing(GF(q)));

true

gap> # ZmodnZ

gap> ForAll([1..50], m -> checkEuclideanRing(Integers mod m));

true

gap> checkEuclideanRing(Integers mod ((2*3*5)^2));

true

gap> checkEuclideanRing(Integers mod ((2*3*5)^3));

true

gap> checkEuclideanRing(Integers mod ((2*3*5*7)^2));

true

gap> checkEuclideanRing(Integers mod ((2*3*5*7)^3));

true

```

`checkEuclideanRing` 함수는 주어진 환 `R`과 원소들의 집합 `colls`에 대해 유클리드 함수의 조건을 만족하는지 검사한다. `ForAll` 함수는 주어진 조건을 만족하는 모든 경우에 대해 `checkEuclideanRing` 함수를 실행하여 결과를 확인한다. 위 예제들은 정수, 유리수, 가우스 정수, 가우스 유리수, 유한체, 그리고 Z/nZ 환에서 유클리드 관련 함수들이 정상적으로 작동함을 보여준다.

참조

[1] 웹사이트 Some history of GAP https://www.gap-syst[...] 2019-09-27
[2] 웹사이트 GAP Centres https://www.gap-syst[...] 2020-04-18
[3] 웹사이트 https://pygments.org[...]
[4] 웹사이트 https://www.gap-syst[...]



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

문의하기 : help@durumis.com