vpa
Avaliação em precisão variável de números e expressões simbólicas.
Categoria: Symbolic Computations in MATLAB > Conversion Between Symbolic and Numeric
Sintaxe
r = vpa(x)
Avalia x com digits dígitos decimais significativos (32 por padrão).
r = vpa(x, d)
Avalia com d dígitos somente nesta chamada.
Descrição
vpa transforma quantidades exatas como sqrt(sym(2)) ou sym(1)/3 em decimais com muito mais dígitos do que um double oferece, enquanto os símbolos continuam simbólicos: vpa(sin(x) + sym(pi), 5) dá sin(x) + 3.1416. A precisão global é definida por digits.
O resultado é da classe sym; converta para double com double quando precisar de aritmética comum.
Argumentos de entrada
x- Número, expressão simbólica ou array.
d- Número de dígitos significativos.
Argumentos de saída
r- Resultado simbólico em que as partes numéricas são decimais com a precisão pedida.
Exemplo
Precisões diferentes
vpa(sqrt(sym(2)), 20)
vpa(sym(1)/3, 5)
vpa(sym(pi))
syms x
vpa(sin(x) + sym(pi), 5)
ans = 1.4142135623730950488
ans = 0.33333
ans = 3.1415926535897932384626433832795
ans = sin(x) + 3.1416
Observações
No MatLivre, um d explícito maior que a configuração atual de digits não é respeitado; aumente digits antes. Um argumento double como vpa(pi) ou vpa(1/3) é tratado como a constante ou a fração exata, enquanto o MATLAB mostra os dígitos do double armazenado (por exemplo 0.33333333333333331483); use vpa(sym(...)) para resultados portáveis.