Convert symbolic values to MATLAB double precision
collapse all in page
Syntax
d = double(s)
Description
example
converts the symbolic values d
= double(s)s
to double precision. Converting symbolic values to double precision is useful when a MATLAB® function does not accept symbolic values. For differences between symbolic and double-precision numbers, see Choose Numeric or Symbolic Arithmetic.
Examples
collapse all
Convert Symbolic Number to Double Precision
Open Live Script
Convert symbolic numbers to double precision by using double
. Symbolic numbers are exact, while double-precision numbers have round-off errors.
Convert and from symbolic form to double precision.
symN = sym([pi 1/3])
symN =
doubleN = double(symN)
doubleN = 1×2 3.1416 0.3333
For information on round-off errors, see Recognize and Avoid Round-Off Errors.
Convert Variable Precision to Double Precision
Open Live Script
Variable-precision numbers created by vpa are symbolic values. When a MATLAB function does not accept symbolic values, convert variable precision to double precision by using double
.
Convert and from variable-precision form to double precision.
vpaN =
doubleN = double(vpaN)
doubleN = 1×2 3.1416 0.3333
Convert Symbolic Matrix to Double-Precision Matrix
Open Live Script
Convert the symbolic numbers in matrix symM
to double-precision numbers by using double
.
a = sym(sqrt(2));b = sym(2/3);symM = [a b; a*b b/a]
symM =
doubleM = double(symM)
doubleM = 2×2 1.4142 0.6667 0.9428 0.4714
High-Precision Conversion
Open Live Script
When converting symbolic expressions that suffer from internal cancellation or round-off errors, increase the working precision by using digits before converting the number.
Convert a numerically unstable expression Y
with double
. Then, increase precision to 100
digits by using digits
and convert Y
again. This high-precision conversion is accurate, while the low-precision conversion is not.
Y = ((exp(sym(200)) + 1)/(exp(sym(200)) - 1)) - 1;lowPrecisionY = double(Y)
lowPrecisionY = 0
digitsOld = digits(100);highPrecisionY = double(Y)
highPrecisionY = 2.7678e-87
Restore the old precision used by digits
for further calculations.
digits(digitsOld)
Convert Symbolic Results to Double Precision
Open Live Script
Solve the trigonometric equation by using solve
. Set the ReturnConditions
option to true
to return the complete solution, parameters used in the solution, and conditions on those parameters.
syms xeqn = sin(2*x) + cos(x) == 0;[solx,params,conds] = solve(eqn,x,ReturnConditions=true)
solx =
params =
conds =
The solver does not create the variable for the parameters in the MATLAB® workspace. Create this variable. Find the solutions for by using subs
.
syms ksols_k2 = subs(solx,k,2)
sols_k2 =
The solutions are exact symbolic numbers. Convert these numbers to double-precision numbers.
doublesols_k2 = double(sols_k2)
doublesols_k2 = 3×1 7.8540 12.0428 16.2316
Convert Symbolic Matrix Variable of Numbers to Double Precision
Open Live Script
Create a symbolic expression S
that represents , where is a 2-by-2 symbolic matrix variable.
syms A 2 matrixS = A*A - 2*A + eye(2)
S =
Substitute with symbolic numbers .
Aval = [cos(sym(pi)/5) sin(pi/4); -1 0];symS = subs(S,A,Aval)
symS =
Convert the result to a double-precision matrix.
doubleS = double(symS)
doubleS = 2×2 -0.6706 -0.8422 1.1910 0.2929
Input Arguments
collapse all
s
— Symbolic input
symbolic number | array of symbolic numbers | symbolic matrix variable of numbers
Symbolic input, specified as a symbolic number, array of symbolic numbers, or symbolic matrix variable of numbers. If the input contains only numeric values (does not contain symbolic numbers), then the MATLAB double function is called.
Data Types: sym
| symmatrix
Version History
Introduced before R2006a
expand all
R2022b: Convert symbolic matrix variables of numbers to double precision
You can convert a symbolic matrix variable of numbers of type symmatrix
to a double-precision matrix of type double
. For an example, see Convert Symbolic Matrix Variable of Numbers to Double Precision.
See Also
sym | vpa | subs
Topics
- Choose Numeric or Symbolic Arithmetic
- Increase Precision of Numeric Calculations
- Recognize and Avoid Round-Off Errors
- Increase Speed by Reducing Precision
- Change Output Format of Symbolic and Variable-Precision Arithmetic
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office