2025-11-23T08:55:16.500829

Misfortunes of a mathematicians' trio using Computer Algebra Systems: Can we trust?

Durán, Pérez, Varona
Computer algebra systems are a great help for mathematical research but sometimes unexpected errors in the software can also badly affect it. As an example, we show how we have detected an error of Mathematica computing determinants of matrices of integer numbers: not only it computes the determinants wrongly, but also it produces different results if one evaluates the same determinant twice.
academic

수학자 삼인조의 컴퓨터 대수 시스템 사용 중 발생한 불운: 신뢰할 수 있는가?

기본 정보

  • 논문 ID: 1312.3270
  • 제목: Misfortunes of a mathematicians' trio using Computer Algebra Systems: Can we trust?
  • 저자: Antonio J. Durán (Universidad de Sevilla), Mario Pérez (Universidad de Zaragoza), Juan L. Varona (Universidad de La Rioja)
  • 분류: cs.SC (기호 계산), cs.MS (수학 소프트웨어)
  • 발표 시간: 2013년 10월 15일 (arXiv 프리프린트)
  • 논문 링크: https://arxiv.org/abs/1312.3270

초록

컴퓨터 대수 시스템은 수학 연구에 매우 유용하지만, 소프트웨어의 예상치 못한 오류는 때때로 연구에 심각한 영향을 미칠 수 있다. 예시로서, 저자들은 정수 행렬의 행렬식 계산 시 Mathematica의 오류를 어떻게 발견했는지 보여준다: 행렬식을 잘못 계산할 뿐만 아니라 동일한 행렬식을 두 번 계산하면 서로 다른 결과가 나온다.

연구 배경 및 동기

  1. 해결해야 할 문제: 저자들은 Mathematica를 사용하여 수학 연구를 수행하던 중 대정수 행렬의 행렬식 계산 시 소프트웨어에 심각한 오류가 있음을 발견했다. 여기에는 계산 결과 오류와 동일한 계산이 서로 다른 결과를 생성하는 문제가 포함된다.
  2. 문제의 중요성:
    • 수학자들은 연구를 위해 컴퓨터 대수 시스템에 점점 더 의존하고 있다
    • 잘못된 계산 결과는 잘못된 수학적 결론으로 이어질 수 있다
    • 대정수 계산은 암호학 등의 분야에서 중요한 응용을 가진다
  3. 기존 방법의 한계:
    • 상용 컴퓨터 대수 시스템은 "블랙박스"이며 알고리즘이 불투명하다
    • 알려진 오류는 일반적으로 사용자에게 공개되지 않는다
    • 현대적 소프트웨어 검증 기술을 적용하기 어렵다
  4. 연구 동기: 저자들은 Karlin과 Szegő의 직교 다항식에 관한 결과의 확장을 연구하던 중 Mathematica와 Maple이 서로 다른 계산 결과를 제시했으며, 이를 통해 Mathematica의 체계적 오류를 발견했다.

핵심 기여

  1. Mathematica의 심각한 계산 오류 발견 및 보고: 대정수 행렬의 행렬식 계산 시 잘못된 결과 생성
  2. 재현 가능한 오류 생성 방법 제공: 오류를 유발하는 행렬을 생성하는 무작위 프로그램 설계
  3. 오류의 비결정론적 특성 규명: 동일한 행렬의 행렬식 계산이 서로 다른 결과를 생성할 수 있음을 보여줌
  4. 컴퓨터 대수 시스템의 신뢰성에 대한 의문 제기: 이러한 시스템을 어떻게 신뢰할 수 있는지에 관한 중요한 논의 촉발

방법 상세 설명

문제 발견 과정

저자들은 직교 다항식의 Casorati 행렬식을 연구할 때:

P_{f_1}(a_k) & P_{f_1}(a_{k+1}) & \cdots & P_{f_1}(a_{k+l}) \\ P_{f_2}(a_k) & P_{f_2}(a_{k+1}) & \cdots & P_{f_2}(a_{k+l}) \\ \vdots & \vdots & \ddots & \vdots \\ P_{f_l}(a_k) & P_{f_l}(a_{k+1}) & \cdots & P_{f_l}(a_{k+l}) \end{pmatrix}$$ 부동소수점 문제를 피하기 위해 정수를 사용하여 모든 예시를 구성했지만, Mathematica와 Maple이 서로 다른 결과를 제시했다. ### 오류 격리 방법 계산 문제를 격리하기 위해 저자들은 다음과 같은 방법으로 오류를 유발하는 행렬을 생성했다: 1. **기본 행렬 생성**: ```mathematica basicMatrix = Table[Table[RandomInteger[{-99, 99}], {i, 1, 14}], {j, 1, 14}] ``` 2. **대정수 생성**: ```mathematica powersMatrix = DiagonalMatrix[{10^123, 10^152, 10^185, 10^220, 10^397, 10^449, 10^503, 10^563, 10^979, 10^1059, 10^1143, 10^1229, 10^1319, 10^1412}] ``` 3. **무작위 섭동 추가**: ```mathematica smallMatrix = Table[Table[RandomInteger[{-999, 999}], {i, 1, 14}], {j, 1, 14}] ``` 4. **최종 행렬 구성**: ```mathematica bigMatrix = basicMatrix.powersMatrix + smallMatrix ``` ### 오류 검증 동일한 행렬의 행렬식을 여러 번 계산하여 오류를 검증했다: ```mathematica a = Det[bigMatrix]; b = Det[bigMatrix]; ``` 결과적으로 `a==b`가 자주 `False`를 반환했다. ## 실험 설정 ### 테스트 환경 - **소프트웨어 버전**: Mathematica 8.0부터 9.0.1까지 - **운영 체제**: Mac 및 Windows - **비교 소프트웨어**: 검증 도구로 Maple과 Sage 사용 ### 테스트 데이터 - **행렬 규모**: 14×14 - **수치 범위**: 약 10,000자리의 대정수 포함 - **생성 방식**: 기본 행렬을 무작위로 생성한 후 거듭제곱으로 확대하고 작은 섭동을 추가하여 구성 ## 실험 결과 ### 주요 발견 1. **계산 오류**: Mathematica가 계산한 행렬식 값이 완전히 잘못됨 2. **비결정론성**: 동일한 행렬의 여러 번 계산이 서로 다른 결과를 생성 3. **버전 관련성**: 오류는 버전 8과 9에서 나타나며, 버전 6과 7은 영향을 받지 않는 것으로 보임 ### 구체적 사례 특정 예시에서: - Mathematica 첫 번째 계산: `N[a] = -3.263388173990166 × 10^9768` - Mathematica 두 번째 계산: `N[b] = -8.158470434975415 × 10^9768` - 정확한 결과(Maple/Sage): `≈ 1.95124219131987 × 10^9762` ### 오류 보고 저자들은 2013년 10월 7일 Wolfram Research에 이 오류를 보고했다(사례 번호: CASE:303438). 확인 회신을 받았지만 문제는 이후 버전에서도 해결되지 않았다. ## 관련 연구 1. **역사적 선례**: 1994년 Thomas Nicely가 발견한 펜티엄 나눗셈 오류와 유사 2. **소프트웨어 검증**: 오픈소스 컴퓨터 대수 시스템의 검증 기술 연구 언급 3. **수학 소프트웨어 성공 사례**: - 사색 정리의 증명(Appel과 Haken) - 케플러 추측의 증명(Thomas Hales) - Kenzo 소프트웨어가 발견한 발표된 정리의 오류 ## 결론 및 논의 ### 주요 결론 1. **신뢰성 문제**: 기호 계산(정수 연산)이라도 컴퓨터 대수 시스템은 오류를 생성할 수 있다 2. **영향 범위**: 대정수 계산 오류는 이론 수학뿐만 아니라 암호학 등의 응용 분야에도 영향을 미친다 3. **체계적 문제**: 상용 소프트웨어의 "블랙박스" 특성으로 인해 오류를 예측하고 피하기 어렵다 ### 한계 1. **오류 유발 조건 불명확**: 어떤 행렬이 오류를 유발할지 정확히 예측할 수 없다 2. **버전 특이성**: 오류는 특정 버전에서만 나타난다 3. **플랫폼 의존성**: 서로 다른 운영 체제에서 검증이 필요하다 ### 향후 방향 1. 더 나은 소프트웨어 검증 기술 개발 2. 상용 소프트웨어의 투명성 향상 3. 더 완벽한 오류 보고 및 수정 메커니즘 구축 ## 심층 평가 ### 장점 1. **실질적 의의가 큼**: 광범위하게 사용되는 수학 소프트웨어의 심각한 오류를 규명 2. **방법이 과학적**: 여러 독립적 시스템을 통한 검증으로 발견의 신뢰성 보장 3. **재현성이 강함**: 오류 재현 방법을 상세히 제공 4. **작성이 명확함**: 구체적인 수학 연구를 배경으로 문제 발견 과정을 생생하게 제시 ### 부족한 점 1. **이론적 분석 제한**: 오류 발생의 근본 원인에 대한 심층 분석 부재 2. **해결 방안 부족**: 주로 문제 보고이며, 이러한 오류를 예방하거나 탐지하는 방법 부재 3. **테스트 범위**: 주로 특정 유형의 계산(대정수 행렬 행렬식)에 집중 ### 영향력 1. **학술적 가치**: 컴퓨터 보조 증명의 신뢰성 문제에 대해 연구자들에게 주의 환기 2. **실용적 가치**: Mathematica를 사용하여 대정수 계산을 수행하는 사용자에게 중요한 경고 3. **소프트웨어 개선**: 소프트웨어 개발사가 이러한 오류를 중시하고 수정하도록 촉구 ### 적용 가능한 시나리오 이 연구의 발견은 다음에 적용 가능하다: - Mathematica를 사용하여 대정수 행렬 계산을 수행하는 연구 - 암호학의 대수 연산 - 고정밀 기호 계산이 필요한 수학 연구 - 컴퓨터 대수 시스템의 신뢰성 평가 ## 참고 문헌 논문이 인용한 중요 문헌: 1. Karlin & Szegő (1960/1961) - 직교 다항식 행렬식에 관한 원본 연구 2. Appel & Haken (1977) - 사색 문제의 컴퓨터 보조 증명 3. Hales (2005) - 케플러 추측의 증명 4. Ciaurri & Varona (2006) - 컴퓨터 계산 신뢰성에 관한 초기 연구 --- 이 논문은 비록 분량이 길지 않지만, 중요한 문제를 규명한다: 겉으로는 신뢰할 수 있어 보이는 기호 계산도 체계적 오류를 포함할 수 있다는 것이다. 이는 수학 연구를 위해 컴퓨터에 의존할 때 신중함을 유지해야 하며, 소프트웨어 검증과 투명성의 중요성을 강조한다.