# Documentation

### This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

## Symbolic Matrix Computation

This example shows how to perform simple matrix computations using Symbolic Math Toolbox™.

Generate a possibly familiar test matrix, the 5-by-5 Hilbert matrix.

`H = sym(hilb(5)) `
```H = ```

The determinant is very small.

`d = det(H) `
```d = ```

The elements of the inverse are integers.

`X = inv(H) `
```X = ```

Verify that the inverse is correct.

`I = X*H`
```I = ```

Find the characteristic polynomial.

`syms x; p = charpoly(H,x) `
```p = ```

Try to factor the characteristic polynomial.

`factor(p) `
```ans = ```

The result indicates that the characteristic polynomial cannot be factored over the rational numbers.

Compute the 50 digit numerical approximations to the eigenvalues.

```digits(50) e = eig(vpa(H)) ```
```e = ```

Create a generalized Hilbert matrix involving a free variable, .

```t = sym('t'); [I,J] = meshgrid(1:5); H = 1./(I+J-t)```
```H = ```

Substituting retrieves the original Hilbert matrix.

`subs(H,t,1) `
```ans = ```

The reciprocal of the determinant is a polynomial in .

`d = 1/det(H) `
```d = ```

`d = expand(d)`
```d = ```

The elements of the inverse are also polynomials in .

`X = inv(H) `
```X = ```

Substituting generates the Hilbert inverse.

`X = subs(X,t,'1') `
```X = ```

`X = double(X) `
```X = 25 -300 1050 -1400 630 -300 4800 -18900 26880 -12600 1050 -18900 79380 -117600 56700 -1400 26880 -117600 179200 -88200 630 -12600 56700 -88200 44100 ```

Investigate a different example.

`A = sym(gallery(5)) `
```A = ```

This matrix is "nilpotent". It's fifth power is the zero matrix.

`A^5 `
```ans = ```

Because this matrix is nilpotent, its characteristic polynomial is very simple.

`p = charpoly(A,'lambda') `
`p =`

You should now be able to compute the matrix eigenvalues in your head. They are the zeros of the equation lambda^5 = 0.

Symbolic computation can find the eigenvalues exactly.

`lambda = eig(A) `
```lambda = ```

Numeric computation involves roundoff error and finds the zeros of an equation that is something like lambda^5 = eps*norm(A) So the computed eigenvalues are roughly lambda = (eps*norm(A))^(1/5) Here are the eigenvalues, computed by the Symbolic Toolbox using 16 digit floating point arithmetic. It is not obvious that they should all be zero.

```digits(16) lambda = eig(vpa(A)) ```
```lambda = ```

This matrix is also "defective". It is not similar to a diagonal matrix. Its Jordan Canonical Form is not diagonal.

`J = jordan(A) `
```J = ```

The matrix exponential, expm(t*A), is usually expressed in terms of scalar exponentials involving the eigenvalues, exp(lambda(i)*t). But for this matrix, the elements of expm(t*A) are all polynomials in t.

```t = sym('t'); E = simplify(expm(t*A)) ```
```E = ```

By the way, the function "exp" computes element-by-element exponentials.

`X = exp(t*A) `
```X = ```