Create symbolic scalar variables and functions, and matrix variables and functions (2024)

Table of Contents
Syntax Description Symbolic Scalar Variables Symbolic Scalar Functions Symbolic Matrix Variables Symbolic Matrix Functions Array of Symbolic Objects Names of Symbolic Objects Examples Create Symbolic Scalar Variables Create Vector of Symbolic Scalar Variables Create Matrix of Symbolic Scalar Variables Manage Assumptions for Symbolic Scalar Variables Create and Evaluate Symbolic Functions Create and Evaluate Symbolic Functions with Matrices as Formulas Create and Evaluate Symbolic Matrices as Functions of Two Variables Create Symbolic Matrix Variables Commutation Relation of Symbolic Matrix Variables Find Hessian Matrix Create Function of Vector and Scalar Create Symbolic Objects from Returned Symbolic Array List All Symbolic Objects Delete All Symbolic Objects Input Arguments var1 ... varN — Symbolic scalar variables, matrices, arrays, or matrix variables valid variable names separated by spaces [n1 ... nM] — Dimensions of vector, matrix, or array of symbolic scalar variables vector of nonnegative integers n — Dimensions of square matrix nonnegative scalar integer set — Assumptions on symbolic scalar variables real | positive | integer | rational f(var1,...,varN) — Symbolic function or matrix function with its input arguments function and variable names with parentheses [nrow ncol] — Dimensions of symbolic matrix variables or functions vector of nonnegative integers symArray — Symbolic scalar variables and functions to create vector of symbolic scalar variables | cell array of symbolic scalar variables and functions Output Arguments S — Names of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrayscell array of character vectors Limitations Tips Version History R2022b: Return the names of all symbolic objects in the MATLAB workspace R2022a: Create symbolic matrix functions of type symfunmatrix R2021b: syms clears assumptions on symbolic variables when creating symbolic functions R2021a: Create symbolic matrix variables of type symmatrix R2018b: syms clears assumptions on symbolic variables R2018b: syms will no longer support clear option See Also Topics Comando de MATLAB Americas Europe Asia Pacific References

Create symbolic scalar variables and functions, and matrix variables and functions

collapse all in page

Syntax

syms var1 ... varN

syms var1 ... varN [n1 ... nM]

syms var1 ... varN n

syms ___ set

syms f(var1,...,varN)

syms f(var1,...,varN) [n1 ... nM]

syms f(var1,...,varN) n

syms var1 ... varN [nrow ncol] matrix

syms var1 ... varN n matrix

syms f(var1,...,varN) [nrow ncol] matrix

syms f(var1,...,varN) [nrow ncol] matrix keepargs

syms f(var1,...,varN) n matrix

syms f(var1,...,varN) n matrix keepargs

syms(symArray)

syms

S = syms

Description

Symbolic Scalar Variables

example

syms var1 ... varN creates symbolic scalar variables var1 ... varN of type sym. Separate the different variables with spaces. This syntax clears all previous definitions of var1 ... varN.

example

syms var1 ... varN [n1 ... nM] creates arrays of symbolic scalar variables var1 ... varN, where each array has the size n1-by-...-by-nM and contains automatically generated symbolic scalar variables as its elements. For example, syms a [1 3] creates the symbolic array a = [a1 a2 a3] and the symbolic scalar variables a1, a2, and a3 in the MATLAB® workspace. For multidimensional arrays, these elements have the prefix a followed by the element’s index using _ as a delimiter, such as a1_3_2.

syms var1 ... varN n creates n-by-n matrices of symbolic scalar variables filled with automatically generated elements.

example

syms ___ set sets the assumption that the created symbolic scalar variables belong to set, and clears other assumptions. Here, set can be real, positive, integer, or rational. You can also combine multiple assumptions using spaces. For example, syms x positive rational creates a symbolic scalar variable x with a positive rational value. Use this option in addition to any of the input argument combinations in previous syntaxes.

Symbolic Scalar Functions

example

syms f(var1,...,varN) creates the symbolic function f of type symfun and the symbolic scalar variables var1,...,varN of type sym, which represent the input arguments of f. This syntax clears all previous definitions of var1,...,varN including symbolic assumptions. The evaluated symbolic function f(var1,...,varN) is of type sym.

syms f(var1,...,varN) [n1 ... nM] creates an n1-by-...-by-nM symbolic array with automatically generated symbolic functions as its elements. This syntax also generates the symbolic scalar variables var1,...,varN that represent the input arguments of f. For example, syms f(x) [1 2] creates the symbolic array f(x) = [f1(x) f2(x)], the symbolic functions f1 and f2, and the symbolic scalar variable x in the MATLAB workspace. For multidimensional arrays, these elements have the prefix f followed by the element’s index using _ as a delimiter, such as f1_3_2.

example

syms f(var1,...,varN) n creates an n-by-n matrix of symbolic functions filled with automatically generated elements.

Symbolic Matrix Variables

example

syms var1 ... varN [nrow ncol] matrix creates symbolic matrix variables var1 ... varN of type symmatrix, where each symbolic matrix variable has the size nrow-by-ncol. (since R2021a)

example

syms var1 ... varN n matrix creates n-by-n symbolic matrix variables. (since R2021a)

Symbolic Matrix Functions

syms f(var1,...,varN) [nrow ncol] matrix creates the symbolic matrix function f of type symfunmatrix and the symbolic scalar variables var1,...,varN of type sym. The evaluated symbolic matrix function f(var1,...,varN) is of type symmatrix and has the size nrow-by-ncol. This syntax clears all previous definitions of var1,...,varN including symbolic assumptions. (since R2022a)

example

syms f(var1,...,varN) [nrow ncol] matrix keepargs keeps existing definitions of var1,...,varN in the workspace. If any of the variables var1,...,varN does not exist in the workspace, then this syntax creates them as symbolic scalar variables of type sym. The size of the evaluated symbolic matrix function f(var1,...,varN) is nrow-by-ncol. (since R2022a)

syms f(var1,...,varN) n matrix creates a square symbolic matrix function, where the evaluated symbolic matrix function f(var1,...,varN) has the size n-by-n. This syntax clears all previous definitions of var1,...,varN including symbolic assumptions. (since R2022a)

syms f(var1,...,varN) n matrix keepargs keeps existing definitions of var1,...,varN in the workspace. If any of the variables var1,...,varN does not exist in the workspace, then this syntax creates them as symbolic scalar variables of type sym. (since R2022a)

Array of Symbolic Objects

example

syms(symArray) creates the symbolic scalar variables and functions contained in symArray, where symArray is either a vector of symbolic scalar variables or a cell array of symbolic scalar variables and functions. This syntax clears all previous definitions of variables specified in symArray including symbolic assumptions. Use this syntax only when such an array is returned by another function, such as solve or symReadSSCVariables.

Names of Symbolic Objects

example

syms lists the names of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrays in the MATLAB workspace.

example

S = syms returns a cell array of the names of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrays.

Examples

collapse all

Create Symbolic Scalar Variables

Open Live Script

Create symbolic scalar variables x and y.

syms x yx
x =x
y
y =y

Create Vector of Symbolic Scalar Variables

Open Live Script

Create a 1-by-4 vector of symbolic scalar variables a with the automatically generated elements a1,,a4. This command also creates the symbolic scalar variables a1, ..., a4 in the MATLAB workspace.

syms a [1 4]a
a =(a1a2a3a4)
whos
 Name Size Bytes Class Attributes a 1x4 8 sym a1 1x1 8 sym a2 1x1 8 sym a3 1x1 8 sym a4 1x1 8 sym 

You can change the naming format of the generated elements by using a format character vector. Declare the symbolic scalar variables by enclosing each variable name in single quotes. syms replaces %d in the format character vector with the index of the element to generate the element names.

syms 'p_a%d' 'p_b%d' [1 4]p_a
p_a =(pa1pa2pa3pa4)
p_b
p_b =(pb1pb2pb3pb4)

Create Matrix of Symbolic Scalar Variables

Open Live Script

Create a 3-by-4 matrix of symbolic scalar variables with automatically generated elements. The elements are of the form Ai,j, which generates the symbolic matrix variables A1,1,,A3,4.

syms A [3 4]A
A =

(A1,1A1,2A1,3A1,4A2,1A2,2A2,3A2,4A3,1A3,2A3,3A3,4)

Manage Assumptions for Symbolic Scalar Variables

Open Live Script

Create symbolic scalar variables x and y, and assume that they are integers.

syms x y integer

Create another scalar variable z, and assume that it has a positive rational value.

Check assumptions.

assumptions
ans =(xZyZzQ0<z)

Alternatively, check assumptions on each variable. For example, check assumptions set on the variable x.

assumptions(x)
ans =xZ

Clear assumptions on x, y, and z.

assume([x y z],'clear')assumptions
 ans = Empty sym: 1-by-0 

Create a 1-by-3 symbolic array a, and assume that the array elements have real values.

syms a [1 3] realassumptions
ans =(a1Ra2Ra3R)

Create and Evaluate Symbolic Functions

Open Live Script

Create symbolic functions with one and two arguments.

syms s(t) f(x,y)

Both s and f are abstract symbolic functions. They do not have symbolic expressions assigned to them, so the bodies of these functions are s(t) and f(x,y), respectively.

Specify a formula for f.

f(x,y) = x + 2*y
f(x, y) =x+2y

Compute the function value at the point x = 1 and y = 2.

f(1,2)
ans =5

Create and Evaluate Symbolic Functions with Matrices as Formulas

Open Live Script

Create a symbolic function and specify its formula by using a matrix of symbolic scalar variables.

syms xM = [x x^3; x^2 x^4];f(x) = M
f(x) =

(xx3x2x4)

Compute the function value at the point x = 2.

f(2)
ans =

(28416)

Compute the value of this function for x = [1 2 3; 4 5 6]. The result is a cell array of symbolic matrices.

xVal = [1 2 3; 4 5 6];y = f(xVal)
y=2×2 cell array {2x3 sym} {2x3 sym} {2x3 sym} {2x3 sym}

Access the contents of a cell in the cell array by using braces.

y{1}
ans =

(123456)

Create and Evaluate Symbolic Matrices as Functions of Two Variables

Open Live Script

Create a 2-by-2 symbolic matrix with automatically generated symbolic functions as its elements.

syms f(x,y) 2f
f(x, y) =

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))

Assign symbolic expressions to the symbolic functions f1_1(x,y) and f2_2(x,y). These functions are displayed as f1,1(x,y) and f2,2(x,y) in the Live Editor. When you assign these expressions, the symbolic matrix f still contains the initial symbolic functions in its elements.

f1_1(x,y) = 2*x;f2_2(x,y) = x - y;f
f(x, y) =

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))

Substitute the expressions assigned to f1_1(x,y) and f2_2(x,y) by using the subs function.

A = subs(f)
A(x, y) =

(2xf1,2(x,y)f2,1(x,y)x-y)

Evaluate the value of the symbolic matrix A, which contains the substituted expressions, at x = 2 and y = 3.

A(2,3)
ans =

(4f1,2(2,3)f2,1(2,3)-1)

Create Symbolic Matrix Variables

Since R2021a

Open Live Script

Create two symbolic matrix variables with size 2-by-3. Nonscalar symbolic matrix variables are displayed as bold characters in the Live Editor and Command Window.

syms A B [2 3] matrixA
A =A
B
B =B

Add the two matrices. The result is represented by the matrix notation A+B.

X = A + B
X =A+B

The data type of X is symmatrix.

class(X)
ans = 'symmatrix'

Convert the symbolic matrix variable X to a matrix of symbolic scalar variables Y. The result is denoted by the sum of the matrix components.

Y = symmatrix2sym(X)
Y =

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)

The data type of Y is sym.

class(Y)

Show that the converted result in Y is equal to the sum of two matrices of symbolic scalar variables.

syms A B [2 3]Y2 = A + B
Y2 =

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)

isequal(Y,Y2)
ans = logical 1

Commutation Relation of Symbolic Matrix Variables

Since R2021a

Open Live Script

Symbolic matrix variables represent matrices, vectors, and scalars in compact matrix notation. When representing nonscalars, these variables are noncommutative. When mathematical formulas involve matrices and vectors, writing them using symbolic matrix variables is more concise and clear than writing them componentwise.

Create two symbolic matrix variables.

syms A B [2 2] matrix

Check the commutation relation for multiplication between two symbolic matrix variables.

A*B - B*A
ans =AB-BA
isequal(A*B,B*A)
ans = logical 0

Check the commutation relation for addition between two symbolic matrix variables.

isequal(A+B,B+A)
ans = logical 1

Find Hessian Matrix

Since R2021a

Open Live Script

Create 3-by-3 and 3-by-1 symbolic matrix variables.

syms A 3 matrixsyms X [3 1] matrix

Find the Hessian matrix of XTAX. Derived equations involving symbolic matrix variables are displayed in typeset as they would be in textbooks.

f = X.'*A*X
f =XTAX
H = diff(f,X,X.')
H =AT+A

Create Function of Vector and Scalar

Since R2022a

Open Live Script

Create the function v(r,t)=r2t, where r is a 1-by-3 vector and t is a scalar.

Create r as a symbolic matrix variable and t as a symbolic scalar variable. Create v(r,t) as a symbolic matrix function and keep existing definitions of r and t in the workspace.

syms r [1 3] matrixsyms tsyms v(r,t) [1 1] matrix keepargs

Assign the formula of v(r,t).

v(r,t) = norm(r)/t
v(r, t) =r2t-1

The symbolic matrix function accepts scalars, vectors, and matrices as its input arguments. Evaluate the function for the vector value r=(1,2,2) and the scalar value t=3.

vEval = v([1 2 2],3)
vEval =

13Σ12whereΣ1=(122)

Convert the evaluated function from the symmatrix data type to the sym data type.

vSym = symmatrix2sym(vEval)
vSym =1

Create Symbolic Objects from Returned Symbolic Array

Open Live Script

Certain functions, such as solve and symReadSSCVariables, can return a vector of symbolic scalar variables or a cell array of symbolic scalar variables and functions. These variables or functions do not automatically appear in the MATLAB workspace. Create these variables or functions from the vector or cell array by using syms.

Solve the equation sin(x) == 1 by using solve. The parameter k in the solution does not appear in the MATLAB workspace.

syms xeqn = sin(x) == 1;[sol,parameter,condition] = solve(eqn,x,'ReturnConditions',true);parameter
parameter =k

Create the parameter k by using syms. The parameter k now appears in the MATLAB workspace.

syms(parameter)

Similarly, use syms to create the symbolic objects contained in a vector or cell array. Examples of functions that return a cell array of symbolic objects are symReadSSCVariables and symReadSSCParameters.

List All Symbolic Objects

Open Live Script

Create some symbolic scalar variables, functions, matrix variables, matrix functions, and arrays.

syms a f(x)syms A [2 1]syms B [2 2] matrixsyms g(B) [2 2] matrix keepargs

Display a list of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrays that currently exist in the MATLAB workspace by using syms.

syms
Your symbolic variables are:A A1 A2 B a f g x 

Instead of displaying a list, return a cell array by providing an output to syms.

S = syms
S = 8x1 cell {'A' } {'A1'} {'A2'} {'B' } {'a' } {'f' } {'g' } {'x' }

Delete All Symbolic Objects

Open Live Script

Create several symbolic objects.

syms a b c f(x)syms D g(y) [2 2] matrix

Return all symbolic objects as a cell array by using the syms function. Use the cellfun function to delete all symbolic objects in the cell array symObj.

symObj = syms;cellfun(@clear,symObj)

Check that you deleted all symbolic objects by calling syms. The output is empty, meaning no symbolic objects exist in the MATLAB workspace.

syms

Input Arguments

collapse all

var1 ... varNSymbolic scalar variables, matrices, arrays, or matrix variables
valid variable names separated by spaces

Symbolic scalar variables, matrices, arrays, or matrix variables, specified as valid variable names separated by spaces. That is, each variable name must begin with a letter and can contain only alphanumeric characters and underscores. To verify that a variable name is valid, use isvarname.

Example: x y123 z_1

[n1 ... nM]Dimensions of vector, matrix, or array of symbolic scalar variables
vector of nonnegative integers

Dimensions of vector, matrix, or array of symbolic scalar variables, specified as a vector of nonnegative integers.

Example: [2 3], [2,3]

nDimensions of square matrix
nonnegative scalar integer

Dimensions of the square matrix, specified as a nonnegative scalar integer. For example, syms x 3 matrix creates a square 3-by-3 symbolic matrix variable.

Example: 3

setAssumptions on symbolic scalar variables
real | positive | integer | rational

Assumptions on symbolic scalar variables, specified as real, positive, integer, or rational.

You can combine multiple assumptions using spaces. For example, syms x positive rational creates a symbolic scalar variable x with a positive rational value.

Example: rational

f(var1,...,varN)Symbolic function or matrix function with its input arguments
function and variable names with parentheses

Symbolic function or matrix function with its input arguments, specified as function and variable names with parentheses. The function name f and the variable names var1...varN must be valid variable names. That is, they must begin with a letter and can contain only alphanumeric characters and underscores. To verify that a variable name is valid, use isvarname.

Example: F(r,t), f(x,y)

[nrow ncol]Dimensions of symbolic matrix variables or functions
vector of nonnegative integers

Dimensions of symbolic matrix variables or functions, specified as a vector of nonnegative integers.

Example: [2 3], [2,3]

symArraySymbolic scalar variables and functions to create
vector of symbolic scalar variables | cell array of symbolic scalar variables and functions

Symbolic scalar variables and functions to create, specified as a vector of symbolic scalar variables or a cell array of symbolic scalar variables and functions. Such a vector or array is typically the output of another function, such as solve or symReadSSCVariables.

Output Arguments

collapse all

S — Names of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrays
cell array of character vectors

Names of all symbolic scalar variables, functions, matrix variables, matrix functions, and arrays in the MATLAB workspace, returned as a cell array of character vectors.

Limitations

  • Differentiation functions, such as divergence, curl, jacobian, and laplacian, currently do not accept symbolic matrix variables and symbolic matrix functions as input. To evaluate differentiation with respect to vectors and matrices, use the diff function instead.

  • To show all the functions in Symbolic Math Toolbox™ that accept symbolic matrix variables and symbolic matrix functions as input, use the command methods symmatrix and methods symfunmatrix.

Tips

  • You can create multiple symbolic objects in one call. For example, syms f(x) g(t) y creates two symbolic functions (f and g) and three symbolic scalar variables (x, t, and y).

  • syms is a shortcut for sym, symfun, symmatrix, and symfunmatrix. This shortcut lets you create several symbolic objects with one function call. For example, you can use sym and create each symbolic scalar variable separately. However, when you create variables using sym, any existing assumptions on the created variables are retained. You can also use symfun to create symbolic functions.

  • In functions and scripts, do not use syms to create symbolic scalar variables with the same names as MATLAB functions. For these names, MATLAB does not create symbolic scalar variables, but keeps the names assigned to the MATLAB functions. If you want to create a symbolic scalar variable with the same name as a MATLAB function inside a function or a script, use sym instead. For example, use alpha = sym('alpha').

  • Avoid using syms within functions or parallel for loops because it generates variables without direct output assignment and modifies the global state of the workspace. Using syms within functions can create side effects and other unexpected behaviors. Instead, use sym with left-side output assignment, such as t = sym('t'). For more details, see Choose syms or sym Function.

  • These variable names are invalid with syms: integer, real, rational, positive, and clear. To create symbolic scalar variables with these names, use sym. For example, real = sym('real').

  • clear x does not clear the symbolicobject of its assumptions, such as real, positive, or any assumptionsset by assume, sym, or syms.To remove assumptions, use one of these options:

    • syms x or syms f(x) clears all assumptions from x.

    • assume(x,'clear') clears all assumptions from x.

    • clear all clears all objects inthe MATLAB workspace and resets the symbolic engine.

    • assume and assumeAlso provide more flexibility for setting assumptions on symbolic scalar variables.

  • When you replace one or more elements of a numericvector or matrix with a symbolic number, MATLAB converts thatnumber to a double-precision number.

    A = eye(3);A(1,1) = sym(pi)
    A = 3.1416 0 0 0 1.0000 0 0 0 1.0000

    You cannot replace elements of a numeric vector or matrix with a symbolic scalar variable, expression, or function because these elements cannot be converted to double-precision numbers. For example, syms a; A(1,1) = a throws an error.

  • When evaluating a symbolic matrix function, you must substitute values that have the same size as the defined input arguments. For example, see Create Function of Vector and Scalar. For comparison, this example returns an error:

    syms X [2 2] matrixsyms f(X) [1 1] matrix keepargsf(ones(4))

Version History

Introduced before R2006a

expand all

See Also

assume | assumeAlso | assumptions | displayFormula | isvarname | sym | symfun | symmatrix | symfunmatrix | symvar

Topics

  • Create Symbolic Numbers, Variables, and Expressions
  • Create Symbolic Functions
  • Create Symbolic Matrices
  • Create Symbolic Matrix Variables
  • Use Symbolic Objects to Represent Mathematical Objects
  • Choose syms or sym Function
  • Use Assumptions on Symbolic Variables
  • Add Subscripts, Superscripts, and Accents to Symbolic Variables in the Live Editor
  • Change Output Format of Symbolic and Variable-Precision Arithmetic

Comando de MATLAB

Ha hecho clic en un enlace que corresponde a este comando de MATLAB:

 

Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.

Create symbolic scalar variables and functions, and matrix variables andfunctions (1)

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)

Asia Pacific

Contact your local office

Create symbolic scalar variables and functions, and matrix variables and
functions (2024)

References

Top Articles
Latest Posts
Article information

Author: Dr. Pierre Goyette

Last Updated:

Views: 6096

Rating: 5 / 5 (50 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Dr. Pierre Goyette

Birthday: 1998-01-29

Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

Phone: +5819954278378

Job: Construction Director

Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.