2011-04-06 7 views
13

¿Cómo puedo implementar la precisión cuádruple (aritmética de 128 bits) en MATLAB mientras resuelvo un problema de autovalores de Matrix?MATLAB precision

Estoy tratando de resolver un problema de análisis de estabilidad lineal para el flujo de Couette plano incompresible y la precisión predeterminada de 64 bits de MATLAB no es suficiente para valores más altos de número de Reynolds (alrededor de 4000).

Respuesta

8

Tengo una caja de herramientas aritmética de coma flotante de precisión general en MATLAB, que no requiere la caja de herramientas simbólica. Está disponible en File Exchange ahora. A modo de ejemplo, en 200 dígitos de precisión ...

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

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

Si desea hacer todo de su aritmética en 200 dígitos de precisión cuando se emplean números de HPF, a continuación, sólo especifican que como predeterminado.

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

HPF no es una verdadera herramienta de precisión variable, ya que funciona en un número fijo de dígitos. Es razonablemente eficiente hasta unas pocas decenas de miles de dígitos. Entonces, para obtener 100 dígitos de exp (pi), esto toma alrededor de 1/4 de segundo.

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

Trig funciones también. Aquí 1000 dígitos del pecado (pi). Debería ser cero, por supuesto.

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

Actualmente estoy tratando de resolver el problema usando la caja de herramientas simbólica. Sin embargo, sería genial si pudiera enviarme el código de la caja de herramientas aritmética de coma flotante de precisión general. – Dev

+1

HPF está ahora en el intercambio de archivos. http://www.mathworks.com/matlabcentral/fileexchange/36534-hpf-a-big-decimal-class- current-in -beta-release –

+0

De acuerdo con la documentación en PDF, esta caja de herramientas implementa adición, multiplicación, división, ' 1/x, sqrt (x), 1/sqrt (x), exp (x), ln (x), 2^x, log2 (x), sin (x), cos (x), tan (x), arcsin (x), arccos (x), arctan (x), senh (x), cosh (x), tanh (x), arsinh (x), arcosh (x), artanh (x) '. –

2

Multiprecision Computing Toolbox for MATLAB tiene rápido cuádruple precisión modo.

En particular, es capaz de calcular valores propios & vectores de 100 x 100 matriz por x70-x100 veces más rápido que Symbolic Math Toolbox (utilizando la misma precisión cuádruple).

Consulte la página Fast Quadruple Precision Computations in MATLAB para obtener comparaciones y detalles.

Además de las alternativas sugeridas: Symbolic Math Toolbox y la biblioteca de Ben Barrowes tienen limitaciones importantes, ver mi respuesta here.