Accelerating the pace of engineering and science

# Documentation Center

• Trial Software

# magic

Magic square

M = magic(n)

## Description

M = magic(n) returns an n-by-n matrix constructed from the integers 1 through n^2 with equal row and column sums. The order n must be a scalar greater than or equal to 3.

## Examples

The magic square of order 3 is

M = magic(3)

M =

8    1    6
3    5    7
4    9    2

This is called a magic square because the sum of the elements in each column is the same.

sum(M) =

15    15    15

And the sum of the elements in each row, obtained by transposing twice, is the same.

sum(M')' =

15
15
15

This is also a special magic square because the diagonal elements have the same sum.

sum(diag(M)) =

15

The value of the characteristic sum for a magic square of order n is

sum(1:n^2)/n

which, when n = 3, is 15.

## Limitations

If you supply n less than 3, magic returns either a nonmagic square, or else the degenerate magic squares 1 and [].

expand all

### Tips

A magic square, scaled by its magic sum, is doubly stochastic.

### Algorithms

There are three different algorithms:

• n odd

• n even but not divisible by four

• n divisible by four

To make this apparent, type

for n = 3:20
A = magic(n);
r(n) = rank(A);
end

For n odd, the rank of the magic square is n. For n divisible by 4, the rank is 3. For n even but not divisible by 4, the rank is n/2 + 2.

[(3:20)',r(3:20)']
ans =
3     3
4     3
5     5
6     5
7     7
8     3
9     9
10     7
11    11
12     3
13    13
14     9
15    15
16     3
17    17
18    11
19    19
20     3

Plotting A for n = 18, 19, 20 shows the characteristic plot for each category.