Create a variable-precision floating point number.
x can be a string, a sym or a double. Example:
x = vpa('1/3', 32)
⇒ x = (sym) 0.33333333333333333333333333333333
a = sym(1)/3;
x = vpa(a, 32)
⇒ x = (sym) 0.33333333333333333333333333333333
If n is omitted it defaults to the current value of
digits().
Be careful when creating a high-precision float from a double as you will generally only get 15 digits:
vpa(1/3) ⇒ (sym) 0.3333333333333333148296162... vpa(sqrt(2)); ans^2 ⇒ (sym) 2.0000000000000002734323463...
For the same reason, passing numbers with decimal points may produce undesirable results:
vpa(0.1) ⇒ (sym) 0.1000000000000000055511151...
Instead, enclose the decimal number in a string:
vpa('0.1')
⇒ (sym) 0.10000000000000000000000000000000
Very simple expressions can also be enclosed in quotes:
vpa('sqrt(2)')
⇒ (sym) 1.4142135623730950488016887242097
But be careful as this can lead to unexpected behaviour, such as low-precision results if the string contains decimal points:
vpa('cos(0.1)')
-| warning: string expression involving decimals is
-| dangerous, see "help vpa"...
⇒ ans = (sym) 0.99500416527802...
Instead, it is preferable to use sym or vpa on the
inner-most parts of your expression:
cos(vpa('0.1'))
⇒ (sym) 0.99500416527802576609556198780387
vpa(cos(sym(1)/10))
⇒ (sym) 0.99500416527802576609556198780387
See also: sym, vpasolve, digits.
Package: symbolic