# linalg::expr2Matrix

Construct a matrix from equations

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```linalg::expr2Matrix(`eqns`, <`vars, R`>, <Include>)
```

## Description

`linalg::expr2Matrix(eqns, vars)` constructs the extended coefficient matrix of the system of m linear equations in `eqns` with respect to the n indeterminates in `vars`. The vector is the right-hand side of this system.

`linalg::expr2Matrix` returns the extended coefficient matrix . The right-hand side vector can be extracted from the matrix M by `linalg::col````(M, n + 1)```.

The coefficient matrix A can be extracted by `linalg::delCol``(M, n + 1)`.

Arithmetical expressions in `eqns` are considered as equations with right hand-sides zero.

If no variables are given, then the indeterminates of the equations are determined with the function `indets` and the option `PolyExpr`, i.e., the left-hand sides of the equations are considered as polynomial expressions.

If no component ring `R` is given then the standard domain `Dom::ExpressionField``()` is chosen as the component ring of the extended coefficient matrix.

The coefficients of the linear equations are converted into elements of the component ring `R`. An error message is returned if this is not possible.

## Examples

### Example 1

The extended coefficient matrix of the system x + y + z = 1, 2 y - z + 5 = 0 of linear equations in the variables x, y, z is the following 2×4 matrix:

```delete x, y, z: Ab := linalg::expr2Matrix( [x + y + z = 1, 2*y - z + 5], [x, y, z], Dom::Real )```

We use `linalg::matlinsolve` to compute the general solution of this system:

`linalg::matlinsolve(Ab)`

The coefficient matrix or the right-hand side vector can be be extracted from the matrix `Ab` in the following way:

`A := linalg::delCol(Ab, 4); b := linalg::col(Ab, 4)`

### Example 2

The following two inputs lead to different linear systems:

```delete x, y, z: linalg::expr2Matrix([x + y + z = 1, 2*y - z + 5 = x]), linalg::expr2Matrix([x + y + z = 1, 2*y - z + 5 = x], [x, y])```

### Example 3

Note the difference between calling `linalg::expr2Matrix` with and without option `Include`:

```delete x, y: linalg::expr2Matrix([x + y = 1, 2*x - y = 3], [x, y])```

`linalg::expr2Matrix([x + y = 1, 2*x - y = 3], [x, y], Include)`

## Parameters

 `eqns` The system of linear equations, i.e. a set or list of expressions of type `"_equal"` `vars` A set or list of indeterminates `R` A commutative ring, i.e., a domain of category `Cat::CommutativeRing`

## Options

 `Include` Appends the negative of the right-hand side vector to the coefficient matrix A of the given system of linear equations. The result is the m×(n + 1) matrix .

## Return Values

m×(n + 1) matrix of the domain `Dom::Matrix``(R)`.