2012-02-29 3 views
7

4 배 정밀도로 행렬을 대각 화하려고 시도하고 그 대수를 취하려고합니다. 내장 함수를 사용하여이 작업을 수행 할 수있는 언어가 있습니까?4 배 정밀도 고유 값, 고유 벡터 및 행렬 대수

매트랩 :

은 참고 언어/태그의 패키지는 다음과 같은 결함으로 고통, 불충분 한 쿼드 정밀도를 지원하지 않습니다.

파이썬/NumPy/SciPy : dtype이 float128 인 행렬은 float64에 고유 벡터를 생성합니다.

세이지 : GP/PARI를 통한 인터페이스는 암호 오류 메시지를 산출합니다.

4 배 정밀도로 대각 화 및 행렬 대수를 수행 한 사람이 있습니까? 그렇다면 어떻게됩니까?

+2

다음을 시도해보십시오. [http://code.google.com/p/mpmath/] –

+2

앞에서 말한 것을 잊어 버렸습니다. mpmath는 다중을 지원하지 않습니다. - 정확한 대각 화 및 행렬 함수. 그것은 거의 모든 것을합니다. –

+0

@BenCriger - 무슨 가치가 있는지에 대해서는 numpy의 경우 근본적인 문제는 대부분의 BLAS 구현이 128 비트 부동 소수점 정밀도를 지원하지 않는다는 것입니다. –

답변

8

@Matlab : 4 배 정밀도를 지원하지 않습니다.

Multiprecision Computing Toolbox for MATLAB은 임의의 정밀도로 선형 대수 계산을위한 루틴을 제공합니다.

기본 수학, 수치 방법 (통합, ode, 최적화), 특수 기능 및 기본 데이터 분석과 같은 많은 분야를 다루고 있습니다.

게다가 기존의 Matlab 프로그램을 소스 코드를 최소한으로 수정하거나 임의로 수정하지 않고 임의의 정밀도로 실행할 수 있습니다.

업데이트 (2013 년 3 월 27 일) : 이제 도구 상자는 대안에 비해 거의 100 배 빠른 빠른 배 정밀 모드가 포함되어 있습니다. 비교 및 자세한 내용은 Fast Quadruple Precision Computations in MATLAB을 참조하십시오. 제안 된 대안에


비평가 : 매스 웍스에서

기호 수학 도구 상자 (MATLAB)는 기호 계산을 대상으로. 따라서 임의의 정밀도 계산에 필요한 많은 필수 기능이 부족합니다.

예를 들어 두 개의 vpa() 숫자는 (기호 적으로) "기호"유형이므로 비교할 수 없습니다. 이 유일한 제한은 수치 해석에서 알고리즘의 99 %를 배제합니다.

Symbolic Math Toolbox에없는 다른 기본 선형 대수 기능은 다음과 같습니다. norm, cond, max, min, sort, lu, qr, chol, schur.

무료 복수 정밀도 도구 상자 (MATLAB).

극단적으로 느리고 (모든 산술 연산에 대해 피연산자의 숫자 - 문자열 변환을 수행함 : +, -, ...) 필수적인 기능이 (eig, det, cond, \, ...) 없기 때문에 기능상의 결과가 잘못되었습니다.

예. svd 함수로 전달 된 잘못된 결과는 내 연구를 어느 시점에서 무의미하게 만들었으며 오류는 찾기가 어려웠습니다.

mpmath (파이썬) 주로 특수 기능 컴퓨팅 (특히 초기 하 가족)을 대상으로

. 더 많거나 적은 고급 수치 알고리즘을 지원하지 않습니다. 행렬에 대한 지원이 거의 없습니다. 비록 당신이 최신 버전에서 찾고있는 대수 로그를 가지고있는 것 같습니다.


사실은 이러한 모든 단점은 MATLAB은 (- Multiprecision Computing Toolbox for MATLAB 시작 부분에 언급 된) 임의 정밀도 컴퓨팅을 활성화하기 위해 내 자신의 확장을 개발하기 위해 나를 밀었다. 나는 그저 내 일에만 필요하다.

현재 개발 중입니다 (그러나 이미 나열된 모든 문제를 다른 대안으로 수정 함). 피드백을 보내 주시면 감사하겠습니다.

2

대각선 화와 관련하여 this이 도움이 될 수 있습니다 (그도 제공 할 때 두 배가되고 4 배 정밀도로 끝나는 것보다 더 정확한 고유치가 필요했습니다).

그는 fortran을 사용하고 있습니다. 쿼드로 변경하는 것은 정수를 8 대신 16으로 정의하고 "-fdefault-real-8"을 사용하여 gfortran을 사용하여 LAPACK을 다시 컴파일하여 쿼드로 복식을 향상시키는 것과 관련이 있습니다. ¿ 아마 이런 식으로 LAPACK을 만들고 NumPy에서 사용할 수 있을까요? 나는 모른다.

물론이 정밀도가 실제로 시뮬레이트되므로 프로그램의 속도가 10 배 느려집니다.

죄송합니다. 더 구체적으로 말하지 않았습니다.이 같은 시도는하지 않았지만 블로그 게시물을 기억했으며 최소한 시작하는 것으로 충분할 수 있습니다.