WOLFRAM

yields the core-nilpotent decomposition of a square matrix m.

returns the core-nilpotent decomposition according to the specified format.

Details and Options

  • CoreNilpotentDecomposition[m] returns a list of matrices {t,c,n} where the core matrix c is nonsingular and the matrix n is nilpotent. »
  • The matrix m is related to its core-nilpotent decomposition by m=t.(c 0; 0 n).TemplateBox[{t}, Inverse].
  • For the nilpotent matrix n, there exists a non-negative integer (the index of the matrix m) such that MatrixPower[n,p] is the zero matrix.
  • The core-nilpotent decomposition of a matrix can be used for solving systems of linear differential-algebraic (or difference-algebraic) equations with constant coefficients.
  • If either the core or nilpotent parts are trivial, an empty list {} is returned for the trivial part. »
  • CoreNilpotentDecomposition[m] is equivalent to CoreNilpotentDecomposition[m,"SplitBlocks"].
  • CoreNilpotentDecomposition[m,"BlockDiagonal"] returns a list of matrices {t,d} where .
  • With the setting TargetStructure->"Dense", CoreNilpotentDecomposition[m,"BlockDiagonal"] returns a list of matrices {t,d} where .
  • With the setting TargetStructure->"Structured", the matrix in the list {t,d} is represented as a BlockDiagonalMatrix.

Examples

open allclose all

Basic Examples  (2)Summary of the most common use cases

Compute the core-nilpotent decomposition of a square matrix:

Out[1]=1

Format the result:

Out[2]=2

Core-nilpotent decomposition of a 4×4 matrix:

Out[1]=1

Verify the relation with m:

Out[3]=3

Scope  (12)Survey of the scope of standard use cases

Basic Uses  (7)

Core-nilpotent decomposition of a machine-precision matrix:

Out[1]=1

Core-nilpotent decomposition of a complex matrix:

Out[1]=1

Core-nilpotent decomposition of an exact matrix:

Out[1]=1

Core-nilpotent decomposition of an arbitrary-precision matrix:

Out[1]=1

Core-nilpotent decomposition of a symbolic matrix:

Out[1]=1

The decomposition of large machine-precision matrices is efficient:

Out[2]=2

CoreNilpotentDecomposition[m] is equivalent to CoreNilpotentDecomposition[m,"SplitBlocks"], where the core and nilpotent parts are kept separate:

Out[1]=1

CoreNilpotentDecomposition[m,"BlockDiagonal"] brings the core and nilpotent parts together in a block diagonal matrix:

Out[2]=2

Special Matrices  (5)

Core-nilpotent decomposition of a sparse matrix:

Out[1]=1
Out[2]=2

Core-nilpotent decomposition of a structured matrix:

Out[1]=1
Out[2]=2

The identity matrix has a trivial core-nilpotent decomposition:

Out[1]=1

Core-nilpotent decomposition of a Hilbert matrix:

Out[1]=1

Core-nilpotent decomposition of a strictly upper triangular matrix:

Out[1]=1

Options  (1)Common values & functionality for each option

TargetStructure  (1)

With TargetStructure->"Dense", CoreNilpotentDecomposition[m,"BlockDiagonal"] returns a list of two matrices:

Out[1]=1

The second matrix is a block diagonal matrix consisting of the core and nilpotent parts:

With TargetStructure->"Structured", the second matrix is represented as a BlockDiagonalMatrix:

Out[3]=3

Applications  (2)Sample problems that can be solved with this function

Solve the matrix differential equation , with singular coefficients:

Both and are singular, so the equation cannot be put in the standard form :

Out[2]=2

Compute the core-nilpotent decomposition of the solution to :

Out[3]=3

Let d=s.(TemplateBox[{c}, Inverse] 0; 0 0).TemplateBox[{s}, Inverse]:

Out[4]=4

The solution is then , where is the solution to :

Out[5]=5

Compare with the result given by DSolveValue:

Out[6]=6

Find the general solution of the matrix difference equation with singular coefficient matrix :

The matrix is singular:

Out[2]=2

Using the core-nilpotent decomposition , let d=t.(TemplateBox[{c}, Inverse] 0; 0 0).TemplateBox[{t}, Inverse]:

Out[3]=3

The solution is , where is an arbitrary vector:

Out[4]=4

Verify the solution:

Out[5]=5

Properties & Relations  (4)Properties of the function, and connections to other functions

CoreNilpotentDecomposition returns a triple {t,c,n}:

The matrix c is nonsingular:

Out[4]=4

The matrix n is nilpotent:

Out[5]=5
Out[6]=6

The original matrix m can be expressed in terms of its core-nilpotent decomposition:

Out[7]=7

The core part of the decomposition for an invertible matrix is equal to the matrix:

Out[3]=3

The nilpotent part of the decomposition is an empty list:

Out[4]=4

The similarity matrix t is taken to be the identity matrix:

The identity expressed using BlockDiagonalMatrix holds nonetheless:

Out[6]=6

The nilpotent part of the decomposition for a nilpotent matrix is equal to the matrix:

Out[3]=3

The core part of the decomposition is an empty list:

Out[4]=4

The similarity matrix t is taken to be the identity matrix:

The identity expressed using BlockDiagonalMatrix holds nonetheless:

Out[6]=6

DrazinInverse can be computed with CoreNilpotentDecomposition:

Verify the equality m^D=t.(TemplateBox[{c}, Inverse] 0; 0 0).TemplateBox[{t}, Inverse]:

Out[4]=4

Possible Issues  (2)Common pitfalls and unexpected behavior

The core-nilpotent decomposition is not unique:

Out[4]=4

Either or , but not both, can be equal to {}:

Out[3]=3

MatrixQ[{}] gives False:

Out[4]=4

Use BlockDiagonalMatrix to reconstruct the original matrix, since it interprets {} as a 0×0 matrix:

Out[5]=5
Wolfram Research (2021), CoreNilpotentDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html (updated 2023).
Wolfram Research (2021), CoreNilpotentDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html (updated 2023).

Text

Wolfram Research (2021), CoreNilpotentDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html (updated 2023).

Wolfram Research (2021), CoreNilpotentDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html (updated 2023).

CMS

Wolfram Language. 2021. "CoreNilpotentDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023. https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html.

Wolfram Language. 2021. "CoreNilpotentDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023. https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html.

APA

Wolfram Language. (2021). CoreNilpotentDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html

Wolfram Language. (2021). CoreNilpotentDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html

BibTeX

@misc{reference.wolfram_2025_corenilpotentdecomposition, author="Wolfram Research", title="{CoreNilpotentDecomposition}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html}", note=[Accessed: 25-March-2025 ]}

@misc{reference.wolfram_2025_corenilpotentdecomposition, author="Wolfram Research", title="{CoreNilpotentDecomposition}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html}", note=[Accessed: 25-March-2025 ]}

BibLaTeX

@online{reference.wolfram_2025_corenilpotentdecomposition, organization={Wolfram Research}, title={CoreNilpotentDecomposition}, year={2023}, url={https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html}, note=[Accessed: 25-March-2025 ]}

@online{reference.wolfram_2025_corenilpotentdecomposition, organization={Wolfram Research}, title={CoreNilpotentDecomposition}, year={2023}, url={https://reference.wolfram.com/language/ref/CoreNilpotentDecomposition.html}, note=[Accessed: 25-March-2025 ]}