Symbolic substitution - MATLAB subs (2024)

Table of Contents
Syntax Description Substitute Symbolic Scalar Variables and Functions Substitute Symbolic Matrix Variables and Functions Examples Single Substitution Default Substitution Variable Evaluate Expression with New Values Multiple Substitutions Substitute Scalars with Arrays Substitute Symbolic Scalar Variables in Structure Array Substitute Multiple Scalars with Arrays Substitutions in Equations Substitutions in Functions Substitute Variables with Corresponding Values from Structure Substitute Symbolic Matrix Variables with Arrays Characteristic Polynomial of Matrix Substitute Variables in Symbolic Matrix Function Substitute Symbolic Matrix Variables and Matrix Functions in Equation Evaluate Expression Involving Symbolic Matrix Variables Input Arguments s — Symbolic input symbolic scalar variable | symbolic expression | symbolic equation | symbolic function | symbolic array | symbolic matrix | structure old — Scalar variable to substitute symbolic scalar variable | symbolic function | symbolic expression | symbolic array | cell array new — New value number | symbolic number | symbolic scalar variable | symbolic function | symbolic expression | symbolic array | structure | cell array sM — Symbolic input symbolic matrix variable | symbolic matrix function | symbolic expression | symbolic equation | symbolic condition oldM — Matrix variable or function to substitute symbolic matrix variable | symbolic matrix function | symbolic expression | cell array newM — New value number | symbolic number | symbolic matrix variable | symbolic matrix function | symbolic expression | symbolic array | cell array Tips Version History R2023b: Substitute symbolic matrix variables with their workspace values R2022b: Substitute symbolic matrix variables and matrix functions in symbolic equations or conditions R2022a: Substitute variables in symbolic matrix functions R2021b: Substitute symbolic matrix variables in symbolic expressions See Also Functions Topics MATLAB Command Americas Europe Asia Pacific

Symbolic substitution

collapse all in page

Syntax

snew = subs(s,old,new)

snew = subs(s,new)

snew = subs(s)

sMnew = subs(sM,oldM,newM)

sMnew = subs(sM,newM)

sMnew = subs(sM)

Description

Substitute Symbolic Scalar Variables and Functions

example

snew = subs(s,old,new) returns a copy of s, replacing all occurrences of old with new, and then evaluates s. Here, s is an expression of symbolic scalar variables or a symbolic function, and old specifies the symbolic scalar variables or symbolic function to be substituted.

  • If old and new are both vectors or cell arrays of the same size, subs replaces each element of old with the corresponding element of new.

  • If old is a scalar, and new is a vector or matrix, then subs(s,old,new) replaces all instances of old in s with new, performing all operations element-wise. All constant terms in s are replaced with the constant multiplied by a vector or matrix of all ones.

example

snew = subs(s,new) returns a copy of s, replacing all occurrences of the default symbolic scalar variable in s with new, and then evaluates s. The default variable is defined by symvar(s,1).

example

snew = subs(s) returns a copy of s, replacing symbolic scalar variables in s with their assigned values in the MATLAB® workspace, and then evaluates s. Variables with no assigned values remain as variables.

Substitute Symbolic Matrix Variables and Functions

example

sMnew = subs(sM,oldM,newM) returns a copy of sM, replacing all occurrences of oldM with newM, and then evaluates sM. Here, sM is an expression, equation, or condition involving symbolic matrix variables and matrix functions, and oldM specifies the symbolic matrix variables and matrix functions to be substituted. The substitution values newM must have the same size as oldM. (since R2021b)

example

sMnew = subs(sM,newM) returns a copy of sM, replacing all occurrences of the default symbolic matrix variable in sM with newM, and then evaluates sM. (since R2021b)

example

sMnew = subs(sM) returns a copy of sM, replacing symbolic matrix variables in sM with their assigned values in the MATLAB workspace, and then evaluates sM. Variables with no assigned values remain as variables. (since R2023b)

Examples

collapse all

Single Substitution

Open Live Script

Replace a with 4 in this expression.

syms a bsubs(a + b,a,4)
ans =b+4

Replace a*b with 5 in this expression.

subs(a*b^2,a*b,5)
ans =5b

Default Substitution Variable

Open Live Script

Substitute the default symbolic scalar variable in this expression with a. If you do not specify the scalar variable or expression to replace, subs uses symvar to find the default variable. For x + y, the default variable is x.

syms x y asymvar(x + y,1)
ans =x

Therefore, subs replaces x with a.

subs(x + y,a)
ans =a+y

Evaluate Expression with New Values

Open Live Script

When you assign a new value to a symbolic scalar variable, expressions containing the variable are not automatically evaluated. Instead, evaluate expressions by using subs.

Define the expression y = x^2.

syms xy = x^2;

Assign 2 to x. The value of y is still x^2 instead of 4.

x = 2;y
y =x2

Evaluate y with the new value of x by using subs.

subs(y)
ans =4

Multiple Substitutions

Open Live Script

Make multiple substitutions by specifying the old and new values as vectors.

syms a bsubs(cos(a) + sin(b), [a,b], [sym('alpha'),2])
ans =sin(2)+cos(α)

Alternatively, for multiple substitutions, use cell arrays.

subs(cos(a) + sin(b), {a,b}, {sym('alpha'),2})
ans =sin(2)+cos(α)

Substitute Scalars with Arrays

Open Live Script

Replace the symbolic scalar variable a in this expression with the 3-by-3 magic square matrix. Note that the constant 1 expands to the 3-by-3 matrix with all its elements equal to 1.

syms a tsubs(exp(a*t) + 1, a, -magic(3))

You can also replace an element of a vector, matrix, or array with a nonscalar value. For example, create these 2-by-2 matrices.

A = sym('A',[2,2])
A =

(A1,1A1,2A2,1A2,2)

B = sym('B',[2,2])
B =

(B1,1B1,2B2,1B2,2)

Replace the first element of the matrix A with the matrix B. While making this substitution, subs expands the 2-by-2 matrix A into this 4-by-4 matrix.

A44 = subs(A, A(1,1), B)
A44 =

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

subs does not let you replace a nonscalar or matrix with a scalar that shrinks the matrix size.

Substitute Symbolic Scalar Variables in Structure Array

Open Live Script

Create a structure array with symbolic expressions as the field values.

syms x y zS = struct('f1',x*y,'f2',y + z,'f3',y^2)
S = struct with fields: f1: x*y f2: y + z f3: y^2

Replace the symbolic scalar variables x, y, and z with numeric values.

Sval = subs(S,[x y z],[0.5 1 1.5])
Sval = struct with fields: f1: 1/2 f2: 5/2 f3: 1

Substitute Multiple Scalars with Arrays

Open Live Script

Replace the symbolic scalar variables x and y with these 2-by-2 matrices. When you make multiple substitutions involving vectors or matrices, use cell arrays to specify the old and new values.

syms x ysubs(x*y, {x,y}, {[0 1; -1 0], [1 -1; -2 1]})
ans =

(0-120)

Note that because x and y are scalars, these substitutions are element-wise.

[0 1; -1 0].*[1 -1; -2 1]
ans = 2×2 0 -1 2 0

Substitutions in Equations

Open Live Script

Eliminate scalar variables from an equation by using the variable's value from another equation. In the second equation, isolate the variable on the left side using isolate, and then substitute the right side with the variable in the first equation.

First, declare the equations eqn1 and eqn2.

syms x yeqn1 = sin(x)+y == x^2 + y^2;eqn2 = y*x == cos(x);

Isolate y in eqn2 by using isolate.

eqn2 = isolate(eqn2,y)
eqn2 =

y=cos(x)x

Eliminate y from eqn1 by substituting the left side of eqn2 with the right side of eqn2.

eqn1 = subs(eqn1,lhs(eqn2),rhs(eqn2))
eqn1 =

sin(x)+cos(x)x=cos(x)2x2+x2

Substitutions in Functions

Open Live Script

Replace x with a in this symbolic function.

syms x y asyms f(x,y)f(x,y) = x + y;f = subs(f,x,a)
f(x, y) =a+y

subs replaces the values in the symbolic function formula, but it does not replace input arguments of the function.

formula(f)
ans =a+y
argnames(f)
ans =(xy)

Replace the arguments of a symbolic function explicitly.

syms x yf(x,y) = x + y;f(a,y) = subs(f,x,a);f
f(a, y) =a+y

Substitute Variables with Corresponding Values from Structure

Open Live Script

Suppose you want to verify the solutions of this system of equations.

syms x yeqs = [x^2 + y^2 == 1, x == y];S = solve(eqs,[x y]);S.x
ans =

(-2222)

S.y

Verify the solutions by substituting the solutions into the original system.

isAlways(subs(eqs,S))
ans = 2x2 logical array 1 1 1 1

Substitute Symbolic Matrix Variables with Arrays

Since R2021b

Open Live Script

Define the product of two 2-by-2 matrices. Declare the matrices as symbolic matrix variables with the symmatrix data type.

syms X Y [2 2] matrixsM = X*Y
sM =XY

Replace the matrix variables X and Y with 2-by-2 symbolic matrices. When you make multiple substitutions involving vectors or matrices, use cell arrays to specify the matrix variables to be substituted and their new values. The new values must have the same size as the matrix variables to be substituted.

S = subs(sM,{X,Y},{[0 sqrt(sym(2)); sqrt(sym(2)) 0], [1 -1; -2 1]})
S =

Σ1whereΣ1=(-2222-2)

Convert the expression S to the sym data type to show the result of the substituted matrix multiplication.

Ssym = symmatrix2sym(S)
Ssym =

(-2222-2)

Characteristic Polynomial of Matrix

Since R2021b

Open Live Script

Create a matrix of symbolic numbers.

A = sym([1 4 2; 4 1 2; 2 2 3])
A =

(142412223)

Compute the coefficients of the characteristic polynomial of A using the charpoly function.

c = charpoly(A)
c =(1-5-1721)

Next, define X as a 3-by-3 symbolic matrix variable. Use the coefficients c to create the polynomial p(X)=c1X3+c2X2+c3X+c4I3, where X is an indeterminate that represents a 3-by-3 matrix.

syms X [3 3] matrixp = c(1)*X^3 + c(2)*X^2 + c(3)*X + c(4)*X^0
p =21I3-17X-5X2+X3

Substitute X in the polynomial p(X) with A using the subs function. According to the Cayley-Hamilton theorem, this substitution results in a 3-by-3 zero matrix because the coefficients c are the characteristic polynomial of A. Use symmatrix2sym to convert the substituted expression to a matrix of symbolic numbers.

Y = subs(p,A)
Y =

-17Σ1-5Σ12+Σ13+21I3whereΣ1=(142412223)

Z = symmatrix2sym(Y)
Z =

(000000000)

Substitute Variables in Symbolic Matrix Function

Since R2022a

Open Live Script

Define the function f(A)=A2-2A+I2, where A is a 2-by-2 matrix and I2 is a 2-by-2 identity matrix. Substitute the variable A with another expression and evaluate the new function.

Create a 2-by-2 symbolic matrix variable A. Create a symbolic matrix function f(A), keeping the existing definition of A in the workspace. Assign the polynomial expression of f(A).

syms A 2 matrixsyms f(A) 2 matrix keepargsf(A) = A*A - 2*A + eye(2)
f(A) =I2-2A+A2

Next, create new symbolic matrix variables B and C. Create a new symbolic matrix function g(B,C), keeping the existing definitions of B and C in the workspace.

syms B C 2 matrixsyms g(B,C) 2 matrix keepargs

Substitute the variable A in f(A) with B+C. Assign the substituted result to the new function g(B,C).

g(B,C) = subs(f,A,B+C)
g(B, C) =B+C2+I2-2B-2C

Evaluate g(B,C) for the matrix values B=[01-10] and C=[1-1-21] using subs.

S = subs(g(B,C),{B,C},{[0 1; -1 0],[1 -1; -2 1]})
S =

-2Σ1-2Σ2+Σ1+Σ22+I2whereΣ1=(01-10)Σ2=(1-1-21)

Convert the expression S from the symmatrix data type to the sym data type to show the result of the substituted polynomial.

Ssym = symmatrix2sym(S)
Ssym =

(0000)

Substitute Symbolic Matrix Variables and Matrix Functions in Equation

Since R2022b

Open Live Script

Define the equation XTXf(X,A)=2A, where A is a 3-by-3 matrix and X is a 3-by-1 matrix. Substitute f(X,A) with another symbolic expression and A with symbolic values. Check if the equation is true for these values.

Create two symbolic matrix variables A and X. Create a symbolic matrix function f(X,A), keeping the existing definitions of A and X in the workspace. Create the equation.

syms A [3 3] matrixsyms X [3 1] matrixsyms f(X,A) [1 1] matrix keepargseq = diff(diff(f,X),X.') == 2*A
eq(X, A) =

XTXf(X,A)=2A

Substitute f(X,A) with XTAX and evaluate the second-order differential function in the equation for this expression.

eq = subs(eq,f,X.'*A*X)
eq(X, A) =AT+A=2A

Substitute A with the Hilbert matrix of order 3.

eq = subs(eq,A,hilb(3))
eq(X, A) =

Σ1+Σ1T=2Σ1whereΣ1=(11213121314131415)

Check if the equation is true for these values by using isAlways. Because isAlways accepts only a symbolic input of type symfun or sym, convert eq from type symfunmatrix to type symfun before using isAlways.

tf = isAlways(symfunmatrix2symfun(eq))
tf = 3x3 logical array 1 1 1 1 1 1 1 1 1

Evaluate Expression Involving Symbolic Matrix Variables

Since R2023b

Open Live Script

Define the expression XY2-YX2, where X and Y are 3-by-3 matrices. Create the matrices as symbolic matrix variables.

syms X Y [3 3] matrixC = X*Y^2 - Y*X^2
C =XY2-YX2

Assign values to the matrices X and Y.

X = [-1 2 pi; 0 1/2 2; 2 1 0];Y = [3 2 2; -1 2 1; 1 2 -1];

Evaluate the expression C with the assigned values of X and Y by using subs.

Cnew = subs(C)
Cnew =

-Σ1Σ22+Σ2Σ12whereΣ1=(322-12112-1)Σ2=(-12π0122210)

Convert the result from the symmatrix data type to the double data type.

Cnum = double(Cnew)
Cnum = 3×3 -42.8496 -13.3584 -13.4336 -0.7168 3.1416 0.0752 -3.2832 29.8584 16.4248

Input Arguments

collapse all

sSymbolic input
symbolic scalar variable | symbolic expression | symbolic equation | symbolic function | symbolic array | symbolic matrix | structure

Symbolic input, specified as a symbolic scalar variable, expression, equation, function, array, matrix, or a structure.

Data Types: sym | symfun | struct

oldScalar variable to substitute
symbolic scalar variable | symbolic function | symbolic expression | symbolic array | cell array

Scalar variable to substitute, specified as a symbolic scalar variable, function, expression, array, or a cell array.

Data Types: sym | symfun | cell

newNew value
number | symbolic number | symbolic scalar variable | symbolic function | symbolic expression | symbolic array | structure | cell array

New value to substitute with, specified as a number, symbolic number, scalar variable, function, expression, array, structure, or a cell array.

Data Types: sym | symfun | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | struct | cell

sMSymbolic input
symbolic matrix variable | symbolic matrix function | symbolic expression | symbolic equation | symbolic condition

Symbolic input, specified as a symbolic matrix variable, matrix function, expression, equation, or condition.

Data Types: symmatrix | symfunmatrix

oldMMatrix variable or function to substitute
symbolic matrix variable | symbolic matrix function | symbolic expression | cell array

Matrix variable or function to substitute, specified as a symbolic matrix variable, matrix function, expression, or a cell array.

Data Types: symmatrix | symfunmatrix | cell

newMNew value
number | symbolic number | symbolic matrix variable | symbolic matrix function | symbolic expression | symbolic array | cell array

New value to substitute with, specified as a number, symbolic number, matrix variable, matrix function, expression, array, or a cell array. newM must have the same size as oldM or the default symbolic matrix variable in sM.

Data Types: sym | symmatrix | symfunmatrix | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | struct | cell

Tips

  • subs(s,__) does not modify s. To modify s, use s = subs(s,__).

  • If s is a univariate polynomial and new is a numeric matrix, use polyvalm(sym2poly(s),new) to evaluate s as a matrix. All constant terms are replaced with the constant multiplied by an identity matrix.

  • Starting in R2022b, symbolic substitution involving derivatives or the diff function follows the input order of the symbolic objects to be substituted. For example, this code performs symbolic substitution involving the diff function.

    syms m k x(t)syms x_t x_t_ddoteqSHM = m*diff(x(t),t,2) == -k*x(t);eqSHMnew = subs(eqSHM,[x(t) diff(x(t),t,2)],[x_t x_t_ddot])
    Before R2022b, the code returns this output:
    eqSHMnew = m*x_t_ddot == -k*x_t

    Starting in R2022b, the code returns this output:

    eqSHMnew =0 == -k*x_t
    The difference in output is due to subs now first substituting x(t) with x_t, resulting in diff(x_t,t,2), which is equal to 0. To obtain the substitution result as in previous releases, specify the diff(x(t),t,2) term first so that it is substituted before the x(t) term.
    eqSHMnew = subs(eqSHM,[diff(x(t),t,2) x(t)],[x_t_ddot x_t])
    eqSHMnew = m*x_t_ddot == -k*x_t

Version History

Introduced before R2006a

expand all

You can use the syntax subs(sM) to substitute the symbolic matrix variables and matrix functions in sM with their assigned values in the MATLAB workspace and then evaluate sM. Variables with no assigned values remain as variables. For an example, see Evaluate Expression Involving Symbolic Matrix Variables.

See Also

Functions

  • double | lhs | rhs | simplify | subexpr | vpa

Topics

  • Substitutions in Symbolic Expressions
  • Substitute Variables in Symbolic Expressions
  • Substitute Elements in Symbolic Matrices
  • Substitute Scalars with Matrices
  • Evaluate Symbolic Expressions Using subs

MATLAB Command

You clicked a link that corresponds to this MATLAB command:

 

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Symbolic substitution - MATLAB subs (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

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本 (日本語)
  • 한국 (한국어)

Contact your local office

Symbolic substitution - MATLAB subs (2024)
Top Articles
Get Dungeons of Dreadrock for Switch: Best Price After Comparison - AllKeyShop.com
Obtén Dungeons of Dreadrock para Switch: Mejor Precio Después de Comparar - ClaveCD.es - Comparador de precios de videojuegos en clave CD / CD Key
Swissport Timecard
159R Bus Schedule Pdf
Gameplay Clarkston
Jared Isaacman e Sarah Gillis: quem são os primeiros civis a caminhar no espaço
Record-breaking crowd lifts Seattle Sounders to CCL glory on "special" night | MLSSoccer.com
Suriname vacancies - working in Paramaribo - Teleperformance
Culver's Flavor Of The Day Little Chute
Chronological Age Calculator - Calculate from Date of Birth
Joann Ally Employee Portal
Old Navy Student Discount Unidays
The Obscure Spring Watch Online Free
11 Shows Your Mom Loved That You Should Probably Revisit
Xiom Vega X Review & Playtesting • Racket Insight
13.2 The F Distribution and the F Ratio - Statistics | OpenStax
Exploring the Northern Michigan Craigslist: Your Gateway to Community and Bargains - Derby Telegraph
EVOLVE: Predicting User Evolution and Network Dynamics in Social Media Using Fine-Tuned GPT-like Model
Dominion Post Obituaries Morgantown
Vilonia Treasure Chest
6 Fun Things to Do in Bodega Bay - Sonoma County Tourism
Dumb Money Showtimes Near Regal Edwards Nampa Spectrum
The Boogeyman Showtimes Near Marcus Menomonee Falls Cinema
Violetken 5E
My Eschedule Greatpeople Me
Lonesome Valley Barber
When Is Moonset Tonight
8663081159
Bluestacks How To Change Master Instance
Skyward Login Wylie Isd
Lehman's Demise and Repo 105: No Accounting for Deception
Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa
Orokin Principles Challenge Guide - Warframe
Natalya's Vengeance Set Dungeon
Charlotte North Carolina Craigslist Pets
Chihuahua Adoption in Las Vegas, NV: Chihuahua Puppies for Sale in Las Vegas, NV - Adoptapet.com
Rwby Crossover Fanfiction Archive
Unblocked Games 76 Bitlife
What is IXL and How Does it Work?
Secondary Math 2 Module 3 Answers
North Bay Craigslist Jobs
Lockstraps Net Worth
Press-Citizen Obituaries
QuiBids Review: Legit Penny Auction or a Scam? The Truth... - MoneyPantry
2024 USAF & USSF Almanac: DAF Personnel | Air & Space Forces Magazine
Yoshidakins
Best Drugstore Bronzers
Stpeach Telegram
Yi Asian Chinese Union
29+ Des Moines Craigslist Furniture
The Emperor's New Groove | Rotten Tomatoes
O2 Fitness West Ashley Photos
Latest Posts
Article information

Author: Pres. Lawanda Wiegand

Last Updated:

Views: 5487

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Pres. Lawanda Wiegand

Birthday: 1993-01-10

Address: Suite 391 6963 Ullrich Shore, Bellefort, WI 01350-7893

Phone: +6806610432415

Job: Dynamic Manufacturing Assistant

Hobby: amateur radio, Taekwondo, Wood carving, Parkour, Skateboarding, Running, Rafting

Introduction: My name is Pres. Lawanda Wiegand, I am a inquisitive, helpful, glamorous, cheerful, open, clever, innocent person who loves writing and wants to share my knowledge and understanding with you.