2011-04-06 6 views
13

Matrix 고유 값 문제를 해결하는 동안 어떻게 MATLAB에서 4 배 정밀도 (128 비트 산술)를 구현할 수 있습니까?MATLAB 정밀도

나는 압축되지 않는 평면 Couette 유동에 대한 선형 안정성 분석 문제를 해결하려고하고 있으며, MATLAB의 기본 64 비트 정밀도는 높은 Reynolds 수 (약 4000)에는 충분하지 않습니다.

답변

8

저는 심볼릭 도구 상자가 필요없는 MATLAB의 일반 정밀 부동 소수점 산술 도구 상자가 있습니다. 이제 파일 교환에서 사용할 수 있습니다. 예를 들어, 정밀 200 자리 ...에

>> X = hpf('1.2',200) 
X = 
    1.2 

>> X^723 - 2 
ans = 
    1770275636625441478440184064843963160282702377364043536065.674784028 
335311702907341138106304578079399191891193908698215227428501441099262538 
4031886249461115861966367898404170725299823585166135087107488   

당신이 HPF 번호를 사용하는 경우 정밀도 (200 개) 자리에서 연산을 모두 수행하려면

후 단지로 기본값을 지정합니다.

>> DefaultNumberOfDigits 200 
>> hpf('pi') 
ans = 
    3.141592653589793238462643383279502884197169399375105820974944592307 
816406286208998628034825342117067982148086513282306647093844609550582231 
7253594081284811174502841027019385211055596446229489549303819   

HPF는 고정 된 자릿수로 작동하므로 디자인상의 진정한 가변 정밀 공구가 아닙니다. 최대 수십 자리 수까지 합리적으로 효율적입니다. exp (pi)의 100 자리를 얻으려면 약 1/4 초가 걸립니다.

>> timeit(@() exp(hpf('pi',100))) 
ans = 
    0.2643 

Trig 기능도 있습니다. 여기 1000 자릿수의 죄 (pi). 물론 0이어야합니다.

>> tic,sin(hpf('pi',1000)),toc 
ans = 
    0 
Elapsed time is 0.201679 seconds. 
+0

현재 기호화 된 도구 상자를 사용하여 문제를 해결하려고합니다. 그러나 일반 정밀 부동 소수점 산술 도구 상자에 대한 코드를 우편으로 보내 주시면 좋을 것입니다. – Dev

+1

HPF가 파일 교환 중입니다. http://www.mathworks.com/matlabcentral/fileexchange/36534-hpf-a-big-decimal-class-currently-in-beta-release –

+0

PDF 문서에 따르면이 도구 상자는 더하기, 곱하기, 나누기, log2 (x), sin (x), cos (x), tan (x), 1/sqrt (x), 1/sqrt (x), exp arcsin (x), arctan (x), arctan (x), sinh (x), cosh (x), tanh (x), arsinh (x), arcosh (x), artanh (x) –

2

Multiprecision Computing Toolbox for MATLAB 빠른 배 정밀 모드가 있습니다.

특히, Symbol Math Toolbox (동일한 4 배 정밀도 사용)보다 100 x 100 매트릭스의 고유 값 & 벡터를 x70-x100 배 빠르게 계산할 수 있습니다.

비교 및 ​​자세한 내용은 Fast Quadruple Precision Computations in MATLAB 페이지를 참조하십시오.

다른 대안 외에 - Symbolic Math Toolbox와 Ben Barrowes의 라이브러리에는 모두 제한 사항이 있습니다. 내 대답 here을 참조하십시오.