gives the nn identity matrix.


gives the mn identity matrix.

Details and Options

  • The identity matrix is the identity element for the multiplication of square matrices.
  • The entries of the identity matrix are given by I〚i,j〛=TemplateBox[{{i, ,, j}}, KroneckerDeltaSeq]; that is, one for main diagonal entries and zeros elsewhere.
  • The nn identity matrix satisfies the relation m.=.m=m for any nn matrix m.
  • The nn identity matrix is symmetric, positive definite and unitary, while the mn identity matrix is unitary.
  • IdentityMatrix by default creates a matrix containing exact integers.
  • IdentityMatrix[,SparseArray] gives the identity matrix as a SparseArray object.
  • The following options can be given:
  • TargetStructure Automaticthe structure of the returned matrix
    WorkingPrecision Infinityprecision at which to create entries
  • Possible settings for TargetStructure include:
  • Automaticautomatically choose the representation returned
    "Dense"represent the matrix as a dense matrix
    "Hermitian"represent the matrix as a Hermitian matrix
    "Orthogonal"represent the matrix as an orthogonal matrix
    "Sparse"represent the matrix as a sparse array
    "Structured"represent the matrix as a structured array
    "Symmetric"represent the matrix as a symmetric matrix
    "Unitary"represent the matrix as a unitary matrix
  • With the setting TargetStructureAutomatic, a dense matrix is returned if the number of matrix entries is less than a preset threshold, and a structured array is returned otherwise.
  • Identity matrices, when represented as structured arrays, allow for efficient storage and more efficient operations, including Det, Dot, Inverse and LinearSolve.
  • Operations that are accelerated for IdentityMatrix include:
  • Dettime
  • For a structured IdentityMatrix id, the following properties "prop" can be accessed as id["prop"]:
  • "WorkingPrecision"precision used internally
    "Properties"list of supported properties
    "Structure"type of structured array
    "StructuredData"internal data stored by the structured array
    "StructuredAlgorithms"list of functions with special methods for the structured array
    "Summary"summary information, represented as a Dataset
  • Normal[IdentityMatrix[]] gives the identity matrix as an ordinary matrix.


open allclose all

Basic Examples  (2)

Construct a 3×3 identity matrix:

Visualize the matrix:

Create a 2×3 identity matrix:

Scope  (6)

A square identity matrix:

A rectangular identity matrix:

Compute the rank of an identity matrix:

Construct a sparse identity matrix using the option setting TargetStructure"Sparse":

The sparse representation saves a significant amount of memory for larger matrices:

Generate a structured identity matrix using the option setting TargetStructure"Structured":

The representation and computation are efficient for the structured array:

The normal representation is dramatically bigger and slower:

The inverse needs a large amount of storage:

IdentityMatrix objects include properties that give information about the array:

"WorkingPrecision" gives the precision of the matrix entries:

The "Summary" property gives a brief summary of information about the array:

The "StructuredAlgorithms" property lists the functions that have structured algorithms:

Options  (7)

TargetStructure  (5)

Return the identity matrix as a dense matrix:

Return the identity matrix as a structured array:

Return the identity matrix as a sparse array:

With the setting TargetStructureAutomatic, a dense matrix is returned for small dimensions:

For large dimensions, a structured representation is returned:

The dense representation uses a lot of memory for large lists:

The sparse representation typically uses less memory:

The structured representation uses even less memory:

WorkingPrecision  (2)

Create a machine-precision identity matrix:

Create an identity matrix with ones of precision 24:

Applications  (3)

Use IdentityMatrix to quickly define the standard basis on TemplateBox[{}, Reals]^n:

The variables , and can now be used as the standard basis variables:

Compute the characteristic polynomial using IdentityMatrix:

Compare with a direct computation using CharacteristicPolynomial:

Form the augmented matrix that combines a matrix m with the identity matrix:

Row reduction of the augmented matrix gives an identity matrix augmented with Inverse[m]:

Verify that the right half of r truly is Inverse[m]:

Properties & Relations  (15)

The determinant of a square identity matrix is always 1:

For an nm matrix , Tr[]==Min[n,m]:

A square identity matrix is its own inverse and its own transpose:

The scalar multiple of an identity matrix is a diagonal matrix:

The ^(th), ^(th) entry of any identity matrix is given by KroneckerDelta[i,j]:

The ^(th) row or column of IdentityMatrix[n] is UnitVector[n,i]:

For IdentityMatrix[{n,m}], the rows are instead UnitVector[m,i] for iMin[n,m]:

IdentityMatrix can be converted to a structured DiagonalMatrix:

Use DiagonalMatrix for general diagonal matrices:

For an invertible n×n matrix m, Inverse[m].m==m.Inverse[m]==IdentityMatrix[n]:

For an n×m matrix a, a.PseudoInverse[a]==IdentityMatrix[n]:

The pseudoinverse of an identity matrix is its transpose:

For a nonsingular n×n matrix m, MatrixPower[m,0]==IdentityMatrix[n]:

The KroneckerProduct of a matrix with the identity matrix is a block diagonal matrix:

The WorkingPrecision option is equivalent to creating the matrix, then applying N:

If IdentityMatrix is a square matrix, it can be converted to a PermutationMatrix:

Get the cycle representation of the identity permutation:

Wolfram Research (1988), IdentityMatrix, Wolfram Language function, (updated 2023).


Wolfram Research (1988), IdentityMatrix, Wolfram Language function, (updated 2023).


Wolfram Language. 1988. "IdentityMatrix." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023.


Wolfram Language. (1988). IdentityMatrix. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2024_identitymatrix, author="Wolfram Research", title="{IdentityMatrix}", year="2023", howpublished="\url{}", note=[Accessed: 28-May-2024 ]}


@online{reference.wolfram_2024_identitymatrix, organization={Wolfram Research}, title={IdentityMatrix}, year={2023}, url={}, note=[Accessed: 28-May-2024 ]}