Main Content

A circulant matrix has the property that each row is obtained
from the previous one by cyclically permuting the entries one step
forward. For example, create the symbolic circulant matrix whose elements
are `a`

, `b`

, and `c`

,
using the commands:

syms a b c A = [a b c; c a b; b c a]

A = [ a, b, c] [ c, a, b] [ b, c, a]

Since matrix `A`

is circulant, the sum of elements
over each row and each column is the same. Find the sum of all the
elements of the first row:

sum(A(1,:))

ans = a + b + c

To check if the sum of the elements of the first row equals
the sum of the elements of the second column, use the `isAlways`

function:

isAlways(sum(A(1,:)) == sum(A(:,2)))

The sums are equal:

ans = logical 1

From this example, you can see that using symbolic objects is
very similar to using regular MATLAB^{®} numeric objects.

The `sym`

function also lets you define a symbolic
matrix or vector without having to define its elements in advance.
In this case, the `sym`

function generates the elements
of a symbolic matrix at the same time that it creates a matrix. The
function presents all generated elements using the same form: the
base (which must be a valid variable name), a row index, and a column
index. Use the first argument of `sym`

to specify
the base for the names of generated elements. You can use any valid
variable name as a base. To check whether the name is a valid variable
name, use the `isvarname`

function. By default, `sym`

separates
a row index and a column index by underscore. For example, create
the 2-by-4 matrix `A`

with the elements ```
A1_1,
..., A2_4
```

:

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

A = [ A1_1, A1_2, A1_3, A1_4] [ A2_1, A2_2, A2_3, A2_4]

To control the format of the generated names of matrix elements,
use `%d`

in the first argument:

A = sym('A%d%d', [2 4])

A = [ A11, A12, A13, A14] [ A21, A22, A23, A24]

A particularly effective use of `sym`

is to
convert a matrix from numeric to symbolic form. The command

A = hilb(3)

generates the 3-by-3 Hilbert matrix:

A = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000

By applying `sym`

to `A`

A = sym(A)

you can obtain the precise symbolic form of the 3-by-3 Hilbert matrix:

A = [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5]

For more information on numeric to symbolic conversions, see Numeric to Symbolic Conversion.