Documentation 
The MATLAB^{®} symbolic solve function returns the parameters in a solution and the conditions under which a solution is valid when the ReturnConditions option is specified as true.
Do not specify equations and variables as character strings. Instead of string inputs, declare symbolic variables using syms, and then pass them as input arguments separated by commas, or as a vector of input arguments. For example, replace
solve('2*r = 1, r')
with
syms r solve(2*r == 1, r)
In a future release, string input arguments will be interpreted as option names to support shortcuts, such as ignorea for IgnoreAnalyticConstraints.
solve warns when it calls the numerical solver and returns a numerical output.
solve does not warn if provably no solution exists.
When the list of equations is empty, solve throws an error instead of a warning.
These MATLAB and MuPAD^{®} functions help you
Identify subsets (blocks) of equations that can be used to define subsets of variables.
Identify highindex differential algebraic equations.
Reduce highindex differential algebraic equations to systems of differential index 1 or 0.
The MATLAB symbolic reduceDifferentialOrder function reduces higherorder differential equations to a system of firstorder differential equations. The daetools::reduceDifferentialOrder function provides the same functionality in MuPAD.
incidenceMatrix computes the incidence matrix of a system of differential algebraic equations. The daetools::incidenceMatrix function provides the same functionality in MuPAD.
reduceRedundancies eliminates simple equations from a system of symbolic differential algebraic equations. The daetools::reduceRedundancies function provides the same functionality in MuPAD.
findDecoupledBlocks searches for decoupled blocks in systems of equations. The daetools::findDecoupledBlocks function provides the same functionality in MuPAD.
isLowIndexDAE tests if a firstorder system of differential algebraic equations is of differential index 0 or 1. The daetools::isLowIndexDAE function provides the same functionality in MuPAD.
reduceDAEIndex converts a system of firstorder differential algebraic equations to an equivalent system of differential index 1. The daetools::reduceDAEIndex function provides the same functionality in MuPAD.
reduceDAEToODE reduces the differential index of a system of firstorder semilinear differential algebraic equations to 0. The daetools::reduceDAEToODE function provides the same functionality in MuPAD.
daeFunction converts a system of differential algebraic equations to a MATLAB function handle.
massMatrixForm extracts the mass matrix and the right sides of a semilinear system of symbolic differential algebraic equations. The daetools::massMatrixForm function provides the same functionality in MuPAD.
The MATLAB symbolic chebyshevT and chebyshevU functions represent Chebyshev polynomials of the first and second kind, respectively.
The MATLAB symbolic gegenbauerC function represents Gegenbauer polynomials.
The MATLAB symbolic hermiteH function represents Hermite polynomials.
The MATLAB symbolic jacobiP function represents Jacobi polynomials.
The MATLAB symbolic legendreP function represents Legendre polynomials.
The MATLAB symbolic laguerreL function represents Laguerre polynomials.
The MATLAB symbolic pade function calculates Padé approximations.
The MATLAB symbolic kummerU function computes the value of the confluent hypergeometric function. This function is also known as the Kummer U function.
The MATLAB symbolic polylog function computes polylogarithms.
The MATLAB symbolic signIm function returns a sign of the imaginary part of a complex number. For all complex numbers with a nonzero imaginary part, singIm(z) = sign(imag(z)). For real numbers, signIm(z) = sign(z).
The MATLAB symbolic in function represents the condition that the input is of the specified type. The allowed types are integer, real and rational. The in function is used in the input and output of other functions such as solve to represent conditions on symbolic variables. If the input is a number of the specified type, the in function returns logical 1 (true), and if it is not of the specified type, the in function returns logical 0 (false).
The MATLAB symbolic divisors function computes divisors of integers and polynomials.
The MATLAB symbolic pochhammer function calculates the Pochhammer symbol.
The MATLAB symbolic kroneckerDelta function calculates the Kronecker delta function.
The MATLAB symbolic dirac function with one input argument represents the Dirac delta function. dirac with two input arguments, dirac(n,x) represents the nth derivative of the Dirac delta function at x.
The MATLAB symbolic isAlways function issues a warning when it returns logical 0 (false) for an undecidable input.
In previous releases, isAlways did not issue a warning before returning logical 0 (false) for an undecidable input. To go back to this behavior, suppress the warning by specifying the Unknown option as false, as in isAlways(cond,'Unknown','false').
The MuPAD generate::fortran function can use Fortran 90 as the target compiler, in addition to Fortran 77.
The MATLAB symbolic mod function finds the modulus after division as follows: mod(a,b) = a  b*floor(a/b).
The MATLAB symbolic mod function uses the same definition as the MuPAD modp function. Also, by default, the MuPAD mod operator and its functional form _mod are equivalent to the MuPAD modp function.
In previous releases, the MuPAD modp and mods functions computed the modulus after division according to these definitions:
If a and b are integers, then modp(a,b) is an integer r, such that a = qb + r, 0 <= r < b, and q = a div b.
If b is an integer and a is a rational number, a = u/v, such that v and b are coprime integers, then modp(a,b) = modp(u*w,b). Here, w is an inverse of v mod b, that is, v*w ≡ 1 (mod b).
If a and b are integers, then mods(a,b) is an integer r, such that a = qb + r and b/2 < r <= b/2.
If b is an integer and a is a rational number, a = u/v, such that v and b are coprime integers, then mods(a,b) = mods(u*w,b). Here, w is an inverse of v mod b, that is, v*w ≡ 1 (mod b).
Now, MuPAD uses the same definitions for an integer or rational a. As in previous releases, b must be an integer.
modp(a,b) = a  b*floor(a/b)
mods(a,b) = a  b*round(a/b)
In MuPAD, to get the same results as in previous releases, use the MuPAD numlib::lincongruence function to find a modular inverse, and then use the MuPAD modulo operator or functions, for example:
w := numlib::lincongruence(3, 1, 5)[1]: 22*w mod 5; modp(22*w, 5); mods(22*w, 5); _mod(22*w, 5)
In MATLAB, to get the same results as in previous releases, use the gcd function with three output arguments to find a modular inverse, and then use the mod function as follows. For example, for mod(a,b) = mod(u/v,b) use these commands:
[~, A, ~] = gcd(sym(v), b); mod(A*u, b)
The MATLAB symbolic gcd and lcm functions accept vectors and matrices as input arguments. If A is a vector or a matrix, then gcd(A) and lcm(A) find the greatest common divisor and least common multiple of all elements of A. If A and B are vectors or matrices of the same size, then gcd(A,B) and lcm(A,B) find the greatest common divisor and least common multiple of the pairs of elements of A and B.
The MATLAB symbolic rem function accepts vectors and matrices as input arguments. Also, the new MuPAD rem function lets you compute a remainder after division in a MuPAD notebook.
In previous release, rem accepted polynomials as its input arguments. For example, sym x; R = rem(x^2 + 2, x) returned 2. To perform polynomial division in this and later releases, use the quorem function, for example, sym x; [~, R] = quorem(x^2 + 2, x).
The MATLAB symbolic factor function only accepts scalar inputs. The factor function returns a symbolic vector of irreducible factors of the input.
The factor function does not accept nonscalar inputs. The output is a symbolic vector and is not of type factored.
The MuPAD Symbol::LeftDoubleBracket and Symbol::RightDoubleBracket functions insert left and right double square brackets. These symbols are also called white square brackets.
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

mfun  Still runs  Appropriate special function. For example, replace mfun('P',1,2,3,4) with jacobiP(1,2,3,4).  Replace all instances of mfun with the appropriate function call. See Special Functions for the list of available special functions. 
mfunlist  Still runs  See Special Functions.  See Special Functions for the list of available special functions. 
setVar(nb,'MuPADvar')  Warns  Threeargument version setvar(nb,'MuPADvar',MATLABexpr)  Replace all instances of setvar(nb,'MuPADvar') with setvar(nb,'MuPADvar',MATLABexpr) 
simple  Warns  simplify  Replace all instances of simple(S) with simplify(S). There is no replacement for [r,how] = simple(S). 
emlBlock  Errors  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
The following special functions are available:
The MATLAB symbolic sinhint and coshint function compute the hyperbolic sine and cosine integral functions, respectively.
The MATLAB symbolic ssinint function computes the shifted sine integral function.
The MATLAB symbolic dawson function computes the Dawson integral.
The MATLAB symbolic fresnelc and fresnels functions return the Fresnel cosine and sine integral functions respectively.
The MATLAB symbolic logint function computes the logarithmic integral function. This function is also called the integral logarithm.
The MATLAB symbolic gammaln function computes the logarithmic gamma function.
The MATLAB symbolic igamma function computes the incomplete gamma function.
The MATLAB symbolic dilog function computes the dilogarithm function.
The MATLAB symbolic bernoulli function computes the Bernoulli numbers and polynomials.
The MATLAB symbolic euler function computes the Euler numbers and polynomials.
The MATLAB symbolic harmonic function computes the harmonic function. For positive integer arguments, the harmonic function produces harmonic numbers.
The MATLAB symbolic catalan function represents the Catalan constant. To approximate the Catalan constant with the current precision set by digits, use vpa(catalan).
The MATLAB symbolic eulergamma function represents the EulerMascheroni constant. To approximate the EulerMascheroni constant with the current precision set by digits, use vpa(eulergamma).
The MATLAB symbolic qr function computes the QR factorization of a matrix. The result can be used to solve matrix equations.
The MATLAB symbolic combine function applies rewriting rules to the input expression to combine multiple calls to a function, and returns the rewritten expression. The analytic constraints on applying rewriting rules can be optionally relaxed when the function is called.
The MATLAB numeric solver vpasolve now uses random starting points when searching for solutions if you specify random. This enables the solver to find different solutions for nonpolynomial equations in subsequent calls.
The toolbox provides support for Unicode^{®} characters in MuPAD (including messages to print or display), variable names, file names, and external file content.
In previous releases, the MuPAD strmatch function used [^[] to match any characters excluding [. For example, the command strmatch("a[b", "[^[]", All) returned {"a", "b"}.
Now, use [^\\[] to match any characters excluding [. Thus, rewrite the example as follows: strmatch("a[b", "[^\\[]", All).
strmatch requires the same change for the closing parenthesis ].
The MuPAD functions for file operations, such as finput, fopen, fprint, read, write and more, accept the option Encoding. This option lets you specify the following values for encoding.
Big5  ISO88591  windows932 
EUCJP  ISO88592  windows936 
GBK  ISO88593  windows949 
KSC_5601  ISO88594  windows950 
Macintosh  ISO88599  windows1250 
Shift_JIS  ISO885913  windows1251 
USASCII  ISO885915  windows1252 
UTF8  windows1253  
windows1254  
windows1257 
The MuPAD vector analysis functions curl, divergence, gradient, laplacian, and linalg::ogCoordTab let you choose between right and lefthanded spherical coordinate systems. By default, these functions use the righthanded coordinate system with [radial, polar, azimuthal] coordinates. To switch to [radial, azimuthal, polar] coordinates, specify Spherical[LeftHanded].
In previous releases, the MuPAD vector analysis functions used the lefthanded spherical coordinate system. To get the same results as in previous releases, use 'Spherical[LeftHanded]'. To use the righthanded spherical coordinate system and suppress the warning, use 'Spherical[RightHanded]'.
The following MATLAB symbolic functions now accept more than one nonscalar argument:
airy representing the Airy function
besseli, besselj, bessely, and besselk representing the Bessel functions of the first and second kind, and the modified Bessel functions
beta representing the beta function
ellipticE, ellipticF, ellipticPi, and ellipticCPi representing the elliptic integrals
lambertw representing the Lambert W function
whittakerM and whittakerW representing the Whittaker M and Whittaker W functions
psi representing the polygamma function
fourier and ifourier representing the Fourier and inverse Fourier transforms
laplace and ilaplace representing the Laplace and inverse Laplace transforms
ztrans and iztrans representing the Ztransform and inverse Ztransform
The MATLAB symbolic erfc function with one input argument represents the complementary error function. erfc with two input arguments represents the iterated integrals of the complementary error function, erfc(k,x) = int(erfc(k  1, y), y, x, inf).
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

MuPAD linalg::curl  Still runs  curl  Replace all instances of linalg::curl with curl. 
MuPAD linalg::det  Still runs  det  Replace all instances of linalg::det with det. 
MuPAD linalg::divergence  Still runs  divergence  Replace all instances of linalg::divergence with divergence. 
MuPAD linalg::grad  Still runs  gradient  Replace all instances of linalg::grad with gradient. 
MuPAD linalg::gradient  Still runs  gradient  Replace all instances of linalg::gradient with gradient. 
MuPAD linalg::hessian  Still runs  hessian  Replace all instances of linalg::hessian with hessian. 
MuPAD linalg::jacobian  Still runs  jacobian  Replace all instances of linalg::jacobian with jacobian. 
MuPAD linalg::laplacian  Still runs  laplacian  Replace all instances of linalg::laplacian with laplacian. 
MuPAD linalg::potential  Still runs  potential  Replace all instances of linalg::potential with potential. 
MuPAD linalg::vectorPotential  Still runs  vectorPotential  Replace all instances of linalg::vectorPotential with vectorPotential. 
simple  Warns  simplify  Replace all instances of simple(S) with simplify(S). There is no replacement for [r, how] = simple(S). 
emlBlock  Errors  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
The MATLAB symbolic evaluateMuPADNotebook function lets you evaluate a MuPAD notebook from MATLAB without leaving the MATLAB Command Window or MATLAB Editor. You also can interrupt an evaluation of a MuPAD notebook from MATLAB.
The MATLAB symbolic allMuPADNotebooks function identifies all currently open notebooks and returns a vector of handles to them. You can use this vector to evaluate all or some of the notebooks or close them. If you already created a MuPAD notebook without a handle or if you lost the handle to a notebook, allMuPADNotebooks helps you create a new handle without saving the notebook.
The MATLAB symbolic bernstein function and the MuPAD bernstein function approximate symbolic expressions and functions by Bernstein polynomials. The MATLAB symbolic bernsteinMatrix function and the MuPAD bernsteinMatrix function serve for constructing Bezier curves.
The new ExclusiveConditions option of the MuPAD piecewise function fixes the order of branches in a piecewise expression. Thus, piecewise with ExclusiveConditions is almost equivalent to an ifelifend_if statement, except that piecewise takes into account assumptions on identifiers. For example, if the condition in the first branch returns TRUE, then piecewise returns the expression from the first branch. If a true condition appears in any further branch, then piecewise returns the expression from that branch and removes all subsequent branches.
The MATLAB symbolic mupadNotebookTitle function returns a cell array containing the window title of the MuPAD notebook. This function lets you find the title of a particular notebook as well as all currently open notebooks.
The MATLAB symbolic close function lets you close MuPAD notebooks without leaving the MATLAB Command Window. This function also accepts the 'force' flag suppressing the dialog box that prompts you to save changes.
The MATLAB symbolic diff function lets you compute mixed derivatives in one function call. For example, diff(S,x,y) differentiates the expression S with respect to the variables x, and then differentiates the result with respect to the variable y.
The MATLAB symbolic coeffs function returns coefficients of multivariate polynomials. You can specify polynomial variables as a vector of these variables. If you do not specify the polynomial variables, then coeffs regards all symbolic variables found in the polynomial expression as polynomial variables.
The MuPAD _index function and its equivalent [] now accept lists, vectors, and matrices as indices.
The MuPAD assume, assumeAlso, assuming, and assumingAlso functions let you set assumptions on matrices.
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

simple  Still runs  simplify  Replace all instances of simple(S) with simplify(S). There is no replacement for [r, how] = simple(S). 
emlBlock  Warns  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
diff and int methods for inputs of the char type  Errors  sym  Use the sym method instead. 
MuPAD factoring functions numlib::mpqs, numlib::pollard, and numlib::ecm  Errors  ifactor  Replace all instances of numlib::mpqs, numlib::pollard, and numlib::ecm with ifactor. 
MuPAD Dom::SparseMatrixF2 domain  Errors  Dom::Matrix(Dom::IntegerMod(2))  Replace all instances of Dom::SparseMatrixF2 with Dom::Matrix(Dom::IntegerMod(2)). 
MuPAD userinfo  Errors  Use print instead of userinfo.  
MuPAD setuserinfo  Errors  prog::trace or debug  Try using prog::trace or debug instead of setuserinfo. 
lu computes the LU factorization of a matrix. Permutation information can be returned as a matrix or as a row vector.
chol computes the Cholesky factorization of a matrix. The result can be returned as an upper or lower triangular matrix. Permutation information can be returned as a matrix or as a row vector.
pinv computes the MoorePenrose pseudoinverse of a matrix.
orth computes an orthonormal basis for the range of a symbolic matrix.
adjoint computes the adjoint of a symbolic square matrix.
The MATLAB symbolic subs function lets you:
Verify solutions of systems of equations by substituting the solutions returned by solve back into the systems
Substitute elements of a symbolic expression with arbitrary symbolic functions
subs(s,old,new,0) will not accept 0 in a future release. Replace all instances of subs(s,old,new,0) with subs(s,old,new). The subs function does not switch old and new anymore.
subs does not return doubleprecision floatingpoint results anymore. Instead, it consistently returns symbolic results. To convert such results to doubleprecision numbers, use double.
The MATLAB symbolic simplify function and the MuPAD simplify function achieve better simplification of trigonometric expressions and expressions with nested roots.
The MATLAB symbolic simplify function accepts the new Criterion option. This option lets you discourage simplify from returning results containing complex numbers.
The MuPAD simplify function accepts two new options:
Steps specifies the number of internal simplification steps.
Seconds limits the time allowed for the internal simplification process.
The following new MATLAB symbolic functions compute elliptic integrals:
ellipticK computes the complete elliptic integral of the first kind.
ellipticF computes the incomplete elliptic integral of the first kind.
ellipticE computes the complete and incomplete elliptic integrals of the second kind.
ellipticCK computes the complementary complete elliptic integral of the first kind.
ellipticCE computes the complementary complete elliptic integral of the second kind.
ellipticPi computes the complete and incomplete elliptic integrals of the third kind.
ellipticCPi computes the complementary complete elliptic integral of the third kind.
ellipke computes the complete elliptic integrals of the first and second kinds simultaneously.
The new MATLAB symbolic toeplitz function generates a symbolic Toeplitz matrix from two vectors that specify its first column and first row. This function can also generate a symmetric Toeplitz matrix from one vector.
The MuPAD linalg::toeplitz function now generates a Toeplitz matrix from two vectors that specify its first column and first row. (In MuPAD, vectors are created as 1byn or nby1 matrices.) linalg::toeplitz accepts the new syntaxes along with the existing syntaxes.
The MATLAB symbolic sqrtm function computes the square root of a symbolic matrix.
The MATLAB symbolic sign function returns signs of symbolic real and complex values. The sign of a complex value z is defined as z/abs(z).
The MuPAD linalg::orthog function accepts the new Real option. This option lets you avoid using a complex scalar product in the orthogonalization process.
The MuPAD linalg::factorCholesky function accepts the new Real option. When you use this option, linalg::factorCholesky assumes that the input matrix is real and symmetric, and does not apply complex conjugation in the course of the algorithm.
linalg::factorCholesky can now compute the Cholesky factorization of a complex Hermitian positive definite matrix. In previous releases, linalg::factorCholesky required the input matrix to be symmetric even when working with complex entries. To get the same results as in previous releases for symmetric matrices, use the Real option.
svd accepts the new arguments 0 and 'econ' that let you compute the "economy size" singular value decomposition of a matrix.
The MATLAB isequaln function tests symbolic objects for equality, treating NaN values as equal.
The MATLAB symbolic solve and vpasolve functions now let you control the order in which they return solutions. To ensure the order of the returned solutions, explicitly specify the independent (input) variables. For example, the syntax [b,a] = solve(eqns,b,a) guarantees the order of the returned solutions, while the syntax [b,a] = solve(eqns) does not.
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

simple  Still runs  simplify  Replace all instances of simple(S) with simplify(S). There is no replacement for [r, how] = simple(S). 
emlBlock  Warns  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
MuPAD factoring functions numlib::mpqs, numlib::pollard, and numlib::ecm  Warns  ifactor  Replace all instances of numlib::mpqs, numlib::pollard, and numlib::ecm with ifactor. 
MuPAD Dom::SparseMatrixF2 domain  Warns  Dom::Matrix(Dom::IntegerMod(2))  Replace all instances of Dom::SparseMatrixF2 with Dom::Matrix(Dom::IntegerMod(2)). 
MuPAD userinfo  Warns  Use print instead of userinfo.  
MuPAD setuserinfo  Warns  prog::trace or debug  Try using prog::trace or debug instead of setuserinfo. 
poly  Errors  charpoly  Replace all instances of poly with charpoly. 
sqrt target of the MuPAD simplify function  Errors  MuPAD radsimp or simplifyRadical  Replace all instances of simplify function calls involving the sqrt target with radsimp or simplifyRadical. Alternatively, replace these calls with simplify function calls without targets. 
cos, sin, exp, and ln targets of the MuPAD simplify function  Errors  MuPAD simplify without targets  Replace all instances of simplify function calls involving these targets with simplify function calls without targets. This can lead to a better simplification for some expressions. 
MuPAD transform::fourier  Errors  MuPAD fourier  Replace all instances of transform::fourier with fourier. 
MuPAD transform::invfourier  Errors  MuPAD ifourier  Replace all instances of transform::invfourier with ifourier. 
MuPAD transform::laplace  Errors  MuPAD laplace  Replace all instances of transform::laplace with laplace. 
MuPAD transform::invlaplace  Errors  MuPAD ilaplace  Replace all instances of transform::invlaplace with ilaplace. 
MuPAD transform::ztrans  Errors  MuPAD ztrans  Replace all instances of transform::ztrans with ztrans. 
MuPAD transform::invztrans  Errors  MuPAD iztrans  Replace all instances of transform::invztrans with iztrans. 
MuPAD transform::fourier::addpattern  Errors  MuPAD fourier::addpattern  Replace all instances of transform::fourier::addpattern with fourier::addpattern. 
MuPAD transform::invfourier::addpattern  Errors  MuPAD ifourier::addpattern  Replace all instances of transform::invfourier::addpattern with ifourier::addpattern. 
MuPAD transform::laplace::addpattern  Errors  MuPAD laplace::addpattern  Replace all instances of transform::laplace::addpattern with laplace::addpattern. 
MuPAD transform::invlaplace::addpattern  Errors  MuPAD ilaplace::addpattern  Replace all instances of transform::invlaplace::addpattern with ilaplace::addpattern. 
MuPAD transform::ztrans::addpattern  Errors  MuPAD ztrans::addpattern  Replace all instances of transform::ztrans::addpattern with ztrans::addpattern. 
MuPAD transform::invztrans::addpattern  Errors  MuPAD iztrans::addpattern  Replace all instances of transform::invztrans::addpattern with iztrans::addpattern. 
MuPAD prog::calledFrom  Errors  context(hold(procname))  Replace all instances of prog::calledFrom() with context(hold(procname)). 
MuPAD prog::calltree  Errors  prog::trace  Use prog::trace instead of prog::calltree. 
MuPAD prog::error  Errors  getlasterror  Use getlasterror instead of prog::error. 
MuPAD prog::memuse  Errors  prog::trace(Mem)or bytes()  Use prog::trace(Mem) or bytes() instead of prog::memuse. 
MuPAD prog::testfunc  Errors  print(Unquoted, "...")  Use print(Unquoted, "...") instead of prog::testfunc. 
MuPAD prog::testmethod  Errors  prog::test(..., Method = myTestMethod)  Use prog::test(..., Method = myTestMethod) instead of prog::testmethod. 
MuPAD prog::testnum  Errors  Nothing  No replacement 
Dynamic modules for MuPAD, including the module, external, and Pref::unloadableModules functions and all functions of the module library  Errors  Nothing  No replacement 
charpoly computes the characteristic polynomial of a matrix.
minpoly computes the minimal polynomial of a matrix.
norm computes the 2norm (default), 1norm, Frobenius norm, and infinity norm of a symbolic matrix. It also computes the Pnorm, Frobenius norm, infinity norm, and negative infinity norm of a symbolic vector.
cond computes the corresponding condition numbers of a matrix.
The MATLAB vpasolve function solves equations and systems of equations numerically.
The MATLAB equationsToMatrix function converts a linear system of equations to the matrix form AX = B. The function returns the coefficient matrix A and the vector B that contains the right sides of the equations.
The MATLAB linsolve function solves linear systems of equations represented in the matrix form AX = B. The function also returns the reciprocal of the condition number of the square coefficient matrix A. If A is rectangular, linsolve returns the rank of A.
rectangularPulse and triangularPulse compute the rectangular and triangular pulse functions, respectively.
In MuPAD, the new rectangularPulse and triangularPulse functions are equivalent to rectpulse and tripulse, respectively.
These new MuPAD functions compute integral and Ztransforms:
fourier computes the Fourier transform. You can specify the parameters of the Fourier transform using the new Pref::fourierParameters function.
ifourier computes the inverse Fourier transform. You can specify the parameters of the inverse Fourier transform using the new Pref::fourierParameters function.
laplace computes the Laplace transform.
ilaplace computes the inverse Laplace transform.
ztrans computes the Ztransform.
iztrans computes the inverse Ztransform.
The MuPAD Pref::fourierParameters function lets you specify parameters for Fourier and inverse Fourier transforms.
These new MuPAD functions add new patterns for integral and Ztransforms:
fourier::addpattern adds new patterns for the Fourier transform.
ifourier::addpattern adds new patterns for the inverse Fourier transform.
laplace::addpattern adds new patterns for the Laplace transform.
ilaplace::addpattern adds new patterns for the inverse Laplace transform.
ztrans::addpattern adds new patterns for the Ztransform.
iztrans::addpattern adds new patterns for the inverse Ztransform.
MuPAD does not save custom patterns permanently. The new patterns are available in the current MuPAD session only.
The MuPAD proc function accepts the new noFlatten option. This option prevents flattening of sequences passed as arguments of the procedure.
If in the call testtype(object, T) the argument T is a domain, then the method testtypeDom of T is called with the arguments object, T. If T is not a domain, then the method testtypeDom of T::dom is called with the arguments object, T.
In previous releases, testtype used the testtype slot for overloading by the second argument.
By default, the working precision for double is now limited to at most by 664 digits. You can explicitly specify a larger precision using digits.
Some results returned by double can differ from previous releases. For example, in previous releases double approximated the expression
x = sym('400!*((exp(2000)+1)/(exp(2000)  1)  1)')
by 3.2997. Now it approximates this expression by 0.
To get the same result as in previous releases, increase the precision of computations:
digits(1000) double(x)
ans = 3.2997
Starting in R2012a, real and imag are no longer defined via conj. They use the MuPAD Re and Im functions instead.
In R2011b and earlier, real and imag are defined via the conj function:
syms z real(z) imag(z)
ans = z/2 + conj(z)/2 ans =  (z*i)/2 + (conj(z)*i)/2
Therefore, real and imag can return results in a different form. Results returned by real and imag now are mathematically equivalent to the results returned in previous releases.
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

Old syntax of taylor  Errors  New calling syntax  Update all instances of taylor function calls using the new syntax. 
char(A,d)  Errors  char(A)  Replace all instances of char(A,d) with char(A). 
poly  Warns  charpoly  Replace all instances of poly with charpoly. 
emlBlock  Warns  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
Ability to create links from MuPAD notebooks to MuPAD documentation pages  Not available  Nothing  No replacement 
openmuphlp  Errors  Nothing  No replacement 
MuPAD Help Browser  Not available  Documentation Center  MuPAD documentation is now available in Documentation Center. 
MuPAD Editor  Not available  MATLAB Editor  Open and edit MuPAD program files (.mu files) in the MATLAB Editor. The MATLAB Editor supports syntax highlighting and smart indenting for these files. 
psi(k0:k1,X)  Errors  psi(k,X), where k is a scalar specifying the kth derivative of psi at the elements of X.  Replace all instances of psi(k0:k1,X) with psi(k,X),
where k is a scalar. To modify your code, loop
through the values k0:k1. For example:for k = k0:k1 Y(:,k) = psi(k,X); endIn a future release, size(Y) will be size(X). Modify any code that depends on size(Y). 
diff and int methods for inputs of the char type  Errors  sym  Use the sym method instead. 
sqrt target of the MuPAD simplify function  Errors  MuPAD radsimp or simplifyRadical  Replace all instances of simplify function calls involving the sqrt target with radsimp or simplifyRadical. Alternatively, replace these calls with simplify function calls without targets. 
cos, sin, exp, and ln targets of the MuPAD simplify function  Errors  MuPAD simplify without targets  Replace all instances of simplify function calls involving these targets with simplify function calls without targets. This can lead to a better simplification for some expressions. 
MuPAD transform::fourier  Warns  MuPAD fourier  Replace all instances of transform::fourier with fourier. 
MuPAD transform::invfourier  Warns  MuPAD ifourier  Replace all instances of transform::invfourier with ifourier. 
MuPAD transform::laplace  Warns  MuPAD laplace  Replace all instances of transform::laplace with laplace. 
MuPAD transform::invlaplace  Warns  MuPAD ilaplace  Replace all instances of transform::invlaplace with ilaplace. 
MuPAD transform::ztrans  Warns  MuPAD ztrans  Replace all instances of transform::ztrans with ztrans. 
MuPAD transform::invztrans  Warns  MuPAD iztrans  Replace all instances of transform::invztrans with iztrans. 
MuPAD transform::fourier::addpattern  Warns  MuPAD fourier::addpattern  Replace all instances of transform::fourier::addpattern with fourier::addpattern. 
MuPAD transform::invfourier::addpattern  Warns  MuPAD ifourier::addpattern  Replace all instances of transform::invfourier::addpattern with ifourier::addpattern. 
MuPAD transform::laplace::addpattern  Warns  MuPAD laplace::addpattern  Replace all instances of transform::laplace::addpattern with laplace::addpattern. 
MuPAD transform::invlaplace::addpattern  Warns  MuPAD ilaplace::addpattern  Replace all instances of transform::invlaplace::addpattern with ilaplace::addpattern. 
MuPAD transform::ztrans::addpattern  Warns  MuPAD ztrans::addpattern  Replace all instances of transform::ztrans::addpattern with ztrans::addpattern. 
MuPAD transform::invztrans::addpattern  Warns  MuPAD iztrans::addpattern  Replace all instances of transform::invztrans::addpattern with iztrans::addpattern. 
MuPAD prog::calledFrom  Warns  context(hold(procname))  Replace all instances of prog::calledFrom() with context(hold(procname)). 
MuPAD prog::calltree  Warns  prog::trace  Use prog::trace instead of prog::calltree. 
MuPAD prog::error  Warns  getlasterror  Use getlasterror instead of prog::error. 
MuPAD prog::memuse  Warns  prog::trace(Mem)or bytes()  Use prog::trace(Mem) or bytes() instead of prog::memuse. 
MuPAD prog::testfunc  Warns  print(Unquoted, "...")  Use print(Unquoted, "...") instead of prog::testfunc. 
MuPAD prog::testmethod  Warns  prog::test(..., Method = myTestMethod)  Use prog::test(..., Method = myTestMethod) instead of prog::testmethod. 
MuPAD prog::testnum  Warns  Nothing  No replacement 
Dynamic modules for MuPAD, including the module, external, and Pref::unloadableModules functions and all functions of the module library  Warns  Nothing  No replacement 
The following special functions are available:
airy computes the Airy functions of the first and the second kinds. It also computes the first derivatives of the Airy functions.
beta computes the beta function.
erfinv and erfcinv compute the inverse and inverse complementary error functions.
factorial computes the factorial function.
nchoosek computes binomial coefficients.
whittakerM and whittakerW compute the Whittaker M and Whittaker W functions.
The following vector analysis functions are available:
curl computes the curl of a vector field.
divergence computes the divergence of a vector field.
laplacian computes the laplacian of a scalar function.
potential computes the scalar potential of a vector field.
vectorPotential computes the vector potential of a threedimensional vector field.
The toolbox lets you create symbolic functions. For details, see Creating Symbolic Functions.
dsolve, ezplot, the new odeToVectorField function, and other Symbolic Math Toolbox™ functions now support computations with symbolic functions.
The toolbox also provides the following functions to support common operations on symbolic functions:
You can set assumptions on symbolic variables by using these functions:
assume sets assumptions on symbolic variables.
assumeAlso adds assumptions on symbolic variables without erasing the previous assumptions.
assumptions shows assumptions set on symbolic variables.
Use these relational operators to create symbolic equations, inequalities, and relations:
== and its functional form eq create a symbolic equation. You can solve these equations using solve or dsolve, plot them using ezplot, set assumptions using assume or assumeAlso, or use them in logical expressions.
~= and its functional form ne create a symbolic inequality. You can use inequalities in assumptions and logical expressions.
>, >=, <, <=, and their functional forms ge, gt, le, and lt create symbolic relations. You can use relations in assumptions and logical expressions.
In previous releases, eq evaluated equations and returned logical 1 or 0. Now it returns unevaluated equations letting you create equations that you can pass to solve, assume, and other functions. To obtain the same results as in previous releases, wrap equations in logical or isAlways. For example, use logical(A == B).
Use these logical operations let you create logical expressions with symbolic subexpressions:
& or its functional form and defines the logical conjunction (the logical AND) for symbolic expressions.
 or its functional form or defines the logical disjunction (the logical OR) for symbolic expressions.
~ or its functional form not defines the logical negation (the logical NOT) for symbolic expressions.
xor defines the logical exclusive disjunction (the logical XOR) for symbolic expressions.
If logical expressions are elements of a symbolic array, you can use these new functions to test the logical expressions:
Use these functions to test symbolic equations, inequalities, and relations, including logical statements:
isAlways checks whether an equation, inequality, or relation holds for all values of its variables.
logical checks the validity of an equation, inequality, or relation. This function does not simplify or mathematically transform expressions that form an equation, inequality, or relation. It also typically ignores assumptions on variables.
These functions provide more flexible options for manipulating symbolic expressions:
The rewrite function rewrites expressions in terms of target functions. It returns a mathematically equivalent form of an expression using the specified target functions. For example, it can rewrite trigonometric expressions using the exponential function.
children returns child subexpressions, or terms, of a symbolic expression.
odeToVectorField converts second and higherorder differential equations to systems of firstorder differential equations. It returns a symbolic vector representing the resulting system of firstorder differential equations. With matlabFunction you can generate a MATLAB function from this vector, and then use it as an input for the MATLAB numerical solvers ode23 and ode45.
In MuPAD, the new numeric::odeToVectorField function is equivalent to numeric::ode2vectorfield.
The taylor function that computes the Taylor series expansions has a new syntax and set of options.
The new syntax is not valid before Version 5.8. The old syntax is still supported, but will be removed in a future release. To update existing code that relies on the old syntax, make the following changes to the taylor function calls:
Specify the truncation order using the namevalue pair argument Order.
Specify the expansion point using the namevalue pair argument ExpansionPoint.
Alternatively, specify the expansion point as a third input argument. In this case, you must also specify the independent variable or the vector of variables as the second input argument.
For details and examples, see taylor.
The MuPAD rectpulse and tripulse functions compute the rectangular and triangular pulse functions, respectively.
The MuPAD det, linalg::det, inverse, linsolve, and linalg::matlinsolve functions accept the new Normal option that guarantees normalization of the returned results. The _invert methods of the MuPAD Dom::Matrix(R) and Dom::DenseMatrix(R) domains also accept Normal.
The MuPAD linalg::matlinsolve function accepts the new ShowAssumptions option. This option lets you see internal assumptions on symbolic parameters that linalg::matlinsolve makes while solving a system of equations.
Enhanced MuPAD pdivide function now performs pseudodivision of multivariate polynomials.
Improved MuPAD prog::remember function, which lets you use the remember mechanism in procedures streamlines such processes as debugging, profiling, and argument checking.
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

Old syntax of taylor  Warns  New syntax  Update all instances of taylor function calls using the new syntax. 
Default number of simplification steps in simplify has changed from 50 to 100.  Uses the new default setting  simplify(S,'Steps',50)  To terminate algebraic simplification after 50 steps, call simplify with the namevalue pair argument 'Steps', 50. 
char(A,d)  Warns  char(A)  Replace all instances of char(A,d) with char(A). 
emlBlock  Warns  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
psi(k0:k1,X)  Warns  psi(k,X) where k is a scalar specifying the kth derivative of psi at the elements of X.  Replace all instances of psi(k0:k1,X) with psi(k,X),
where k is a scalar. To modify your code, loop
through the values k0:k1. For example:for k = k0:k1 Y(:,k) = psi(k,X); endIn the future, size(Y) will be size(X). Modify any code that depends on size(Y). 
sqrt target of the MuPAD simplify function  Warns  MuPAD radsimp or simplifyRadical  Replace all instances of simplify function calls involving the sqrt target with radsimp or simplifyRadical. Alternatively, replace these calls with simplify function calls without targets. 
cos, sin, exp, and ln targets of the MuPAD simplify function  Warns  MuPAD simplify without targets  Replace all instances of simplify function calls involving these targets with simplify function calls without targets. This can lead to a better simplification for some expressions. 
MuPAD frame function  Errors  Nothing  No replacement 
You can open and edit MuPAD program files (.mu files) in the MATLAB Editor. MATLAB Editor supports syntax highlighting and smart indenting for these files.
dsolve now accepts the IgnoreAnalyticConstraints and MaxDegree options.
expand now accepts the ArithmeticOnly and IgnoreAnalyticConstraints options.
int now accepts the IgnoreAnalyticConstraints, IgnoreSpecialCases, and PrincipalValue options.
simple now accepts the IgnoreAnalyticConstraints option.
simplify now accepts the IgnoreAnalyticConstraints, Seconds, and Steps options.
solve now accepts the IgnoreAnalyticConstraints, IgnoreProperties, MaxDegree, PrincipalValue, and Real options.
read simplifies using your own MuPAD procedures in MATLAB. See Before Calling a Procedure for details.
symprod computes definite and indefinite products of symbolic series.
hessian computes the Hessian matrix of a scalar function.
gradient computes the vector gradient of a scalar function in Cartesian coordinates. In MuPAD, the new linalg::gradient function is equivalent to linalg::grad.
erfc computes the complementary error function.
psi computes the digamma and polygamma functions.
wrightOmega computes the Wright omega function.
simplifyFraction returns a simplified form of a fraction where both numerator and denominator are polynomials and their greatest common divisor is 1. In MuPAD, the new simplifyFraction function is equivalent to normal.
The new MuPAD simplifyRadical function is equivalent to the MuPAD radsimp function.
pretty uses abbreviations when presenting symbolic results in the MATLAB Command Window. This new format of presenting symbolic results enhances readability of long output expressions.
The MuPAD normal function accepts the new Expand option that determines whether numerators and denominators of fractions are expanded.
In previous releases, normal returned a fraction with the expanded numerator and denominator by default. Now the default setting is that normal can return factored expressions in numerators and denominators. In explicit calls to normal, you can use the Expand option to get the same behavior as in previous releases.
If a function calls normal internally, then that function can return its results in a different form. These new results are mathematically equivalent to the results that you get in previous releases. Many MuPAD library functions can call normal.
All functions of the MuPAD groebner library now can accept and return polynomials with arbitrary arithmetical expressions.
With the Factor option, groebner::gbasis returns a set of lists, such that:
Each list is the Groebner basis of an ideal.
The union of these ideals is a superset of the ideal given as input, and a subset of the radical of that ideal.
With the IgnoreSpecialCases option, groebner::gbasis handles all coefficients in all intermediate results as nonzero unless these coefficients are equal to 0 for all parameter values.
The new MuPAD log2 and log10 functions compute logarithms to the bases 2 and 10, respectively. Also, in MuPAD log(x) is now an alias for ln(x).
Functionality  What Happens When You Use It?  Use This Instead  Compatibility Considerations 

emlBlock  Warns  matlabFunctionBlock  Replace all instances of emlBlock with matlabFunctionBlock. 
Real and IgnoreProperties options in MuPAD ode::solve  Warns  IgnoreSpecialCases or IgnoreAnalyticConstraints  Try using IgnoreSpecialCases or IgnoreAnalyticConstraints instead. 
The new default format of presenting results enhances readability by wrapping long output expressions, including long numbers, fractions and matrices.
The enhanced rationalize function in MuPAD helps the symbolic solver to handle more systems of nonalgebraic equations. In particular, this improvement enables the toolbox to solve more systems of trigonometric equations.
The ordinary differential equation solver demonstrates better performance.
The MuPAD functions gcdex, partfrac, polylib::resultant, and solvelib::pdioe now demonstrate better performance.
polylib::subresultant computes subresultants of two polynomials or polynomial expressions.
With the new List option, partfrac returns a list consisting of the numerators and denominators of the partial fraction decomposition.
The inverf function computes the inverse of the error function.
The inverfc function computes the inverse of the complementary error function.
numlib::checkPrimalityCertificate tests primality certificates returned by numlib::proveprime. For information about proving primality of numbers, see "Proving Primality" in the MuPAD documentation.
There are three new demos that show how to solve equations and compute derivatives and integrals:
To run the new demos, enter symeqndemo, symdiffdemo, or symintdemo in the MATLAB Command Window.
Functionality  What Happens When You Use This Functionality?  Use This Instead  Compatibility Considerations 

MuPAD matchlib::analyze  Errors  MuPAD prog::exprtree  To visualize expressions, use prog::exprtree. 
MuPAD prog::testcall  Errors  Nothing  No replacement 
MuPAD prog::testerrors  Errors  Nothing  No replacement 
Old syntax of MuPAD prog::getOptions  Errors  The new syntax  Update all instances of prog::getOptions calls using the new syntax. 
Old syntax of MuPAD prog::trace  Errors  The new syntax  Update all instances of prog::trace calls using the new syntax. 
The sym function now provides a shortcut for creating vectors and matrices of symbolic variables.
For more information, see Creating a Matrix of Symbolic Variables.
The new MuPAD function generate::Simscape converts MuPAD expressions to Simscape™ equations.
MuPAD functions generate::C, generate::fortran, generate::MATLAB, and generate::Simscape accept the new NoWarning option. The option suppresses all warnings issued by these functions.
Creating and editing links in MuPAD has become easier with the improved Hyperlink dialog box.
MuPAD Notebook now can notify you about matched and unmatched delimiters such as parentheses, brackets, and braces.
MuPAD linalg::matlinsolve function, which solves linear systems of equations in a matrix form, demonstrates better performance.
Enhanced MuPAD solver handles more firstorder nonlinear and thirdorder linear ordinary differential equations. The solver demonstrates improved performance.
The prog::getOptions function that collects and verifies options within a procedure has the new syntax.
The new syntax is not valid in MuPAD versions earlier than 5.5. The old syntax is supported in MuPAD 5.5, but will be removed in a future release.
The prog::trace function used for debugging has the new syntax. The function observes entering and exiting the MuPAD functions.
The new syntax is not valid in MuPAD versions earlier than 5.5. The old syntax is not supported in MuPAD 5.5.
Improved interface for arithmetical operations between polynomials and arithmetical expressions. In previous releases, to perform an arithmetical operation on a polynomial and an arithmetical expression, you must explicitly convert that expression to a polynomials of the corresponding type. Now, when you operate on a polynomial and an arithmetical expression, MuPAD internally converts the arithmetical expression to a polynomial and performs the calculation.
The MuPAD igcd function, which computes the greatest common divisor of integers, now accepts complex numbers. Both real and imaginary parts of accepted complex numbers must be integers or arithmetic expressions that represent integers.
The MuPAD solve function performs better on factorable polynomial systems.
MuPAD performs evaluations of large sums that contain subtractions faster than in previous releases.
In MuPAD, the difference operator (–) no longer invokes the _subtract function. Instead, it invokes the _plus and _negate functions. For example, a  b is equivalent to _plus(a, _negate(b)).
The freeIndets function accepts the new All option. With this option, freeIndets does not exclude the 0th operand from the list of free identifiers.
Functionality  What Happens When You Use This Functionality?  Use This Instead  Compatibility Considerations 

diff and int methods for inputs of the char type  Warns  sym  Use the sym method instead. 
MuPAD matchlib::analyze  Warns  MuPAD prog::exprtree  To visualize expressions, use prog::exprtree. 
MuPAD prog::testcall  Warns  None  No replacement 
MuPAD prog::testerrors  Warns  None  No replacement 
The following options in MuPAD prog::trace:
 Errors  None  No replacement. These options are not supported in the current release. 
Global properties in MuPAD  Errors  Assumptions on each variable  Make assumptions on each variable instead. 
The mupad command that opens a MuPAD notebook now supports references to particular places inside a notebook. You can create a link target inside a notebook and refer to it when opening a notebook.
The new simscapeEquation command represents symbolic expressions in the form of Simscape equations. For more information, see Generating Simscape Equations in the Symbolic Math Toolbox documentation.
The sort function that sorts the element of symbolic arrays and polynomials has the new syntax and set of options.
In previous releases, the sort function flattened symbolic matrices to vectors before sorting the elements. Now the sort function sorts the elements of each column or each row of a symbolic matrix. If you want to obtain the same results as in the previous release, flatten the symbolic matrix before sorting it: sort(A(:)).
The toolbox no longer supports the ability to choose an alternative symbolic engine.
MuPAD now supports 64bit graphical user interfaces (such as notebooks and Editor and Debugger windows) for a 64bit Macintosh operating system.
Adjusting MuPAD documents for printing is easier with the new Print Preview dialog. You can view one or several pages, zoom in and out, switch between page orientations, adjust the page settings without closing the dialog, and print the page or save it to PDF format
Specifying the default settings for graphical user interfaces, such as notebooks and Editor and Debugger windows, has become easier with the improved configuration dialog box.
Basic arithmetic operations now work for lists.
MuPAD demonstrates better performance when handling some linear algebra operations on matrices containing symbolic elements.
Enhanced MuPAD divide function computes the quotient and remainder for division of multivariate polynomials.
Improved performance for conversions involving polynomials. Improved performance for operations on polynomials including evaluation, multiplication, and division.
If the coefficients of a polynomial contain the variables of the polynomial itself, the form of results returned by the MuPAD poly function can differ from previous releases. In previous releases, the poly function converted such coefficients to monomials. Now the poly function can return the coefficients of the original expression as coefficients in the resulting polynomial. To get the same behavior as in previous releases, useexpr to convert an original polynomial into an expression, and then call the poly function. For example, the following call exercises the old behavior: poly(expr(p), [y, x]).
The coeff function accepts the newAll option. With this option, coeff returns all coefficients of a polynomial including those equal to 0.
The expand function accepts the new ArithmeticOnly option. The option allows you to expand a sum without expanding trigonometric expressions and special functions in its terms. Technically, the option omits overloading the expand function for each term of the original expression.
The expand function now expands powers of products such as (xy)^{n} for positive x and y. When called with the IgnoreAnalyticConstraints option , the function expands the power of products for arbitrary terms.
The rationalize function that transforms an arbitrary expression into a rational expression has the new syntax and set of options.
The new syntax is not valid in MuPAD versions earlier than 5.4. The old syntax is supported in MuPAD 5.4, but will be removed in a future release.
Enhanced simplification functions, simplify and Simplify, demonstrate better results for expressions involving trigonometric and hyperbolic functions, square roots, and sums over roots of unity.
The subs function now accepts the new EvalChanges option. By default, subs does not evaluate an expression after making substitutions. With this option, subs evaluates all subexpressions that contain substitutions.
Enhanced MuPAD solver handles more secondorder linear and firstorder nonlinear ordinary differential equations. The solver demonstrates improved performance.
Functionality  What Happens When You Use This Functionality?  Use This Instead  Compatibility Considerations 

MuPAD Domain Dom::Ideal  Errors  groebner  Represent ideals as lists, and use functions of the groebner package instead. 
MuPAD student library  Errors  plot::Integral and linalg  Use plot::Integral and the linalg package instead. 
MuPAD relation option in simplify  Errors  None  No replacement 
Global property  Warns  Assumptions on each variable  Make assumptions on each variable instead. 
digits and vpa do not let you set the number of digits to 1.  Errors  Errors  It is no longer possible to set the number of digits to 1 when using the digits and vpa functions. The Symbolic Math Toolbox software version number 4.9 and lower allowed you to set the number of digits to 1. 
The toolbox now supports 64bit Windows^{®} and Macintosh operating systems. If you work in the MuPAD Notebook Interface on a 64bit Macintosh operating system, MuPAD runs a 64bit engine with 32bit graphical user interfaces, such as notebooks and Editor and Debugger windows.
In previous releases, the reserved words returned MuPAD values. If your code uses the reserved words as MuPAD commands, modify your code and use the evalin command with the reserved word as a name. For example, use evalin(symengine,'beta').
The toolbox now displays the floatingpoint results with the original precision with which the toolbox returned them.
In previous releases, the toolbox displayed floatingpoint results with the current precision. You must update the existing code that relies on the output precision for displaying floatingpoint numbers. Use digits to set the precision you need before computing such results. The toolbox displays the results with the same number of digits it used to compute the results. The toolbox also can increase the specified precision of calculations by several digits.
In previous releases, sym(A, 'f') represented numbers in the form (2^e + N*2^(e  52)) or (2^e + N*2^(e  52)) , with integers for N and e, and N ≥ 0. Now sym(A, 'f') displays results in the rational form that actually represents the doubleprecision floatingpoint numbers.
New preference Pref::outputDigits controls the precision MuPAD uses to display floatingpoint results.
Enhanced solvers handle more equation types of secondorder homogeneous linear ordinary differential equations. The solver demonstrates improved performance.
Enhanced limit function now can compute limits for incomplete Gamma function and exponential integral function.
Enhanced simplification routines for MuPAD hypergeom, mejerG, and bessel special functions.
Enhanced combine function demonstrates better performance for logarithms.
The normal command now accepts the options NoGcd, ToCancel, Rationalize, Recursive, and Iterations. The options control costly operations, such as recognizing greatest common divisors and algebraic dependencies.
Functionality  What Happens When You Use This Functionality?  Use This Instead  Compatibility Considerations 

MuPAD Domain Dom::Ideal  Warns  groebner  Represent ideals as lists, and use functions of the groebner package instead. 
MuPAD student library  Warns  plot::Integral and linalg  Use plot::Integral and the linalg package instead. 
d in char(A, d)  Warns  None  No replacement 
MuPAD relation option in simplify  Warns  None  No replacement 
The dsolve command now accepts the option IgnoreAnalyticConstraints. The option controls the level of mathematical rigor that the solver uses on the analytical constraints on the solution. By default, the solver ignores all analytical constraints.
The results of the dsolve command can differ from those returned in the previous release. If you want to obtain the same solutions as in the previous release, set the value of the option IgnoreAnalyticConstraints to none.
The new emlBlock command converts symbolic expressions to Embedded MATLAB^{®} Function Blocks. You can use these blocks in any Simulink^{®} installation, even those without a Symbolic Math Toolbox license. For more information, see Generating Embedded MATLAB Blocks in the Symbolic Math Toolbox documentation.
matlabFunction now accepts multiple expressions and cell arrays of symbolic arrays as input parameters. The function now allows you to specify the names of the output parameters.
In previous releases, the default name of an output variable was RESULT. Now the default names of the output variables coincide with the names you use to call matlabFunction. You must update existing code that relies on the default output name RESULT. You can change your code using any of these methods:
Define the name of an output variable as RESULT.
Change the name of an input variable to RESULT.
Throughout your code change the variable name from RESULT to the input name.
The Symbolic Math Toolbox product uses some objectoriented programming features to implement symbolic objects. Major enhancements to objectoriented programming capabilities enable easier development and maintenance of large applications and data structures. For a full description of objectoriented features, see the MATLAB ObjectOriented Programming documentation.
It is no longer possible to add methods to @sym by creating a @sym directory containing custom methods.
For an empty x, sym(x) returns a symbolic object of the same size as x. In previous releases, sym(x) returned a symbolic object of size 0by0 for an empty x.
The new generate::MATLAB command converts MuPAD expressions, equations, and matrices to MATLAB formatted strings.
The new IgnoreAnalyticConstraints option allows the use of a set of simplified mathematical rules when solving equations, simplifying expressions, or integrating. For example, this option applies practical, but not generally correct rules for combining logarithms: $$\mathrm{ln}(a)+\mathrm{ln}(b)=\mathrm{ln}(a\cdot b)$$
The new default format of presenting results enhances readability of long output expressions by using abbreviations.
The solver now can handle more than 200 additional types of secondorder ordinary differential equations. The solver demonstrates improved performance.
The enhanced limit function computes limits of piecewise functions including bidirectional and onesided limits.
MuPAD includes the following new special functions:
laguerreL represents Laguerre's L function.
erfc(x,n) returns iterated integrals of the complementary error function.
meijerG represents the Meijer G function.
The hypergeom special function demonstrates better performance.
The prog::tcov function that inspects the data collected during the code execution has the new syntax and set of options.
The new syntax is not valid in MuPAD versions earlier than 5.2. MuPAD 5.2 does not support the earlier syntax.
To see new demos that use MuPAD Notebook Interface, type mupadDemo at the MATLAB command line or click MuPAD Notebooks DemoMuPAD Notebooks Demo.
The default Symbolic Math Toolbox engine is now the MuPAD engine. For more information, see the MuPAD in Symbolic Math Toolbox chapter in the Symbolic Math Toolbox User's Guide.
The new engine causes many computed results to differ from those returned by previous versions of Symbolic Math Toolbox software.
General Differences
Many computations return in a permuted order (such as a + b instead of b + a).
Some computations return in a different, mathematically equivalent form (such as (cos(x))^2 instead of 1  (sin(x))^2).
diff(dirac(t)) returns dirac(t,1) instead of dirac(1,t).
sym(x,'f') no longer produces strings of the form hex digits*2^n. Instead the strings have the form (2^e+N*2^(e52)), where N and e are integers.
For toolbox calculations, some symbols can only be used as symbolic variables, and not in strings: E, I, D, O, beta, zeta, theta, psi, gamma, Ci, Si, and Ei. This is because those symbols represent MuPAD reserved words, and are interpreted as the MuPAD word if you pass them as strings. The words Ci, Si, Ei represent special mathematical functions: the cosine integral, sine integral, and exponential integral respectively.
Error and warning message IDs may have changed.
Performance of numerical integration is slower than in previous versions.
Subexpressions, calculated by the subexpr function, may be different than in previous versions.
The pretty function no longer uses partial subexpressions (with syntax %n).
Calculus
Int no longer evaluates some integrals, including many involving Bessel functions.
symsum(sin(k*pi)/k,0,n) no longer evaluates to pi.
Linear Algebra
The output of colspace may differ from previous versions, but it is mathematically equivalent.
The eig function may return eigenvalues in a different order than previous versions. Expressions returned by eig may be larger than in previous versions.
The jordan function may return diagonal subblocks in a different order than previous versions.
svd may return singular values in a different order than previous versions.
Simplification
The coeffs function may return multivariable terms in a different order than in previous versions.
The expand function may return some trig and exponential expressions differently than in previous versions.
The simplify function involving radicals and powers make fewer assumptions on unknown symbols than in previous versions.
The subexpr function may choose a different subexpression to be the common subexpression than in previous versions.
Subexpressions no longer have partial subexpressions (previous syntax %n).
The solve function returns solutions with higher multiplicity only when solving a single polynomial.
acot(x) = acot(x) instead of pi  acot(x) as in previous versions.
acoth(x) = acoth(x) instead of 2*acoth(0)  acoth(x) as in previous versions.
The simple function has several differences:
The 'how' value combine(trig) has been replaced with combine(sincos), combine(sinhcosh), and combine(ln).
The 'how' values involving convert have been replaced with rewrite.
A new 'how' value of mlsimplify(100) indicates the MuPAD function Simplify(...,Steps=100) simplified the expression.
Simplifications such as (sin(x)^2)^(1/2) to sin(x) are no longer performed, since the MuPAD language is careful not to make assumptions about the sign of sin(x).
Conversion
Arithmetic involving the vpa function uses the current number of digits of precision. Variable precision arithmetic may have different rounding behaviors, and answers may differ in trailing digits (trailing zeros are now suppressed).
The char function returns strings using MuPAD syntax instead of Maple™ syntax.
Testing equality does not compare strings as in previous versions; the symbolic engine equality test is used.
Saving and loading symbolic expressions is compatible with previous versions, except when the symbolic contents use syntax or functions that differ between Maple or MuPAD engines. For example, suppose you save the symbolic object sym('transform::fourier(f,x,w)'), which has MuPAD syntax. You get a MATLAB error if you try to open the object while using a Maple engine.
LaTeX output from the latex function may look different than before.
C and Fortran code generated with the ccode and fortran functions may be different than before. In particular, generated files have intermediate expressions as "optimized" code. For more information, see the Generating C or Fortran Code section of the User's Guide.
pretty output may look different than before.
Equation Solving
solve returns solutions with higher multiplicity only when solving a single polynomial.
solve may return a different number of solutions than before.
Some calls to dsolve that used to return results involving lambertw now return no solution.
dsolve can now use the variable C.
Some dsolve results are more complete (more cases are returned).
Some dsolve results are less complete (not all previous answers are found).
finverse may be able to find inverses for different classes of functions than before.
When finverse fails to find an explicit inverse, it produces different output than before.
Transforms
Fourier and inverse Fourier transforms return the MuPAD form transform::fourier when they cannot be evaluated. For example,
h = sin(x)/exp(x^2); FF = fourier(h) FF = transform::fourier(sin(x)/exp(x^2), x, w)
The reason for this behavior is the MuPAD definition of Fourier transform and inverse Fourier transform differ from their Symbolic Math Toolbox counterparts by the sign in the exponent:
Symbolic Math Toolbox definition  MuPAD definition  

Fourier transform  $$F(w)={\displaystyle \underset{\infty}{\overset{\infty}{\int}}f(x){e}^{iwx}}dx$$  $$F(w)={\displaystyle \underset{\infty}{\overset{\infty}{\int}}f(x){e}^{iwx}}dx$$ 
Inverse Fourier transform  $$f(x)=\frac{1}{2\pi}{\displaystyle \underset{\infty}{\overset{\infty}{\int}}F(w){e}^{iwx}dw}$$  $$f(x)=\frac{1}{2\pi}{\displaystyle \underset{\infty}{\overset{\infty}{\int}}F(w){e}^{iwx}dw}$$ 
Several Fourier transforms can no longer be calculated, especially those involving Bessel functions.
ztrans and iztrans may return more complicated expressions than before.
Special Mathematical Functions
The threeparameter Riemann Zeta function is no longer supported.
heaviside(0) = 0.5; in previous versions it was undefined.
maple
The maple, mhelp, and procread functions error, unless a Maple engine is installed and selected with symengine.
The functionality of the MuPAD language, together with the included libraries, goes far beyond that of the previous Symbolic Math Toolbox software. However, it is not identical to that of the previous Extended Symbolic Math Toolbox™ software. The differences between these software packages are beyond the scope of these release notes.
You can access the MuPAD language in several ways:
To learn the commands, syntax, and functionality of the language, use the MuPAD Help browser, or read the Tutorial.
Use a MuPAD notebook, which contains an integrated help system for the language syntax.
Use the new evalin function or feval function to access the MuPAD language at the MATLAB command line. More detail is available in the Calling BuiltIn MuPAD Functions from the MATLAB Command Window section of the User's Guide.
The MuPAD help viewer contains complete documentation of the MuPAD language, and of the MuPAD Notebook Interface. For more information, see the Getting Help for MuPAD section of the User's Guide.
A MuPAD notebook is an interface for performing symbolic math computations with embedded math notation, graphics, animations, and text. It also enables you to share, document, and publish your calculations and graphics. For example, the MuPAD help viewer is essentially a special MuPAD notebook. For more information, see the Calculating in a MuPAD Notebook section of the User's Guide.
The MuPAD Editor GUI enables you to write custom symbolic functions and libraries in the MuPAD language. The Debugger enables you to test your code. For more information, consult the MuPAD help viewer.
Function  Use 

doc(symengine,...)  Access the MuPAD Help browser. 
evalin(symengine,...)  Use MuPAD functionality in the MATLAB workspace. 
feval(symengine,...)  Use MuPAD functionality in the MATLAB workspace. 
getVar  Copy expressions residing in a MuPAD notebook into the MATLAB workspace. 
mupad  Launch a MuPAD notebook . 
mupadwelcome  Access MuPAD GUIs . 
reset(symengine,...)  Clear the MuPAD engine for the MATLAB workspace. 
setVar  Copy expressions residing in the MATLAB workspace into a MuPAD notebook. 
symvar  Produce a list of symbolic objects in an expression. 
For more information, see the Integration of MuPAD and MATLAB section of the User's Guide.
If you own a compatible version of a Maple software, you can choose to have Symbolic Math Toolbox software use the Maple engine instead of a MuPAD engine. You might want to do this if you have existing Maple programs. Choose the engine by entering symengine at the MATLAB command line; this brings up a GUI for making your choice.
The new matlabFunction generates MATLAB functions from symbolic expressions. matlabFunction writes the generated code to a file or creates a function handle. You can use the generated function handles and files in any MATLAB installation, even those without a Symbolic Math Toolbox license. For more information, see Generating MATLAB Functions in the User's Guide.
Calling a function in code generation package using Maple software now requires you to explicitly include the package name. For example,
maple('codegen[fortran](x^24)');
The generated code output using these methods is unaffected by this change.
In previous versions, functions in the code generation package of Maple software were made automatically available using the Maple with command, and did not require the package name. For example
maple('fortran(x^24)');
This sometimes caused a conflict when assigning to Maple variables having the same name as a function in the code generation package.
Release  Features or Changes with Compatibility Considerations 

R2014b  
R2014a  
R2013b  Functionality being removed or changed 
R2013a 

R2012b  
R2012a  
R2011b  
R2011a  Functionality Being Removed or Changed 
R2010b  
R2010a  
R2009b  
R2009a  
R2008b  None 
R2008a+  None 
R2007b+  MuPAD Engine Replaces Maple Engine 
R2008a  None 
R2007b  None 
R2007a  None 
R2006b  Change in call to code generation package using the maple function 