## Description

We can use sage to perform elementary row operations on a given matrix. This is a bit tedious, so it may be best reserved for large matrices where the calculations are more difficult by hand.

## Sage Cell

#### Scaling Rows

We can multiply a row by a scalar with the `.rescale_row()` method. Note that the rows of a matrix start with row 0.

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
A.rescale_row(0, 2)
print(A)
```

#### Adding and Subtracting Rows

We can add and subtract rows with the `.add_multiple_of_row()` method. The method takes in 3 arguments: the row being modified comes first, then the row you are adding or subtracting to it, then a scalar multiple for the second row.

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
A.add_multiple_of_row(1, 0, 2)
print(A)
```

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
A.add_multiple_of_row(1, 0, -1)
print(A)
```

#### Swapping Rows

We can swap rows with the `.swap_rows()` method.

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
A.swap_rows(0, 1)
print(A)
```

## Options

#### Creating New Matrices from the Row Operations

Each of the commands above has a 'with' version, which returns the matrix we're operating on and allows us to assign it to a new variable, rather than simply changing the original matrix. This is useful because it allows us to leave a trail showing the row operations we made.

#### Scaling Rows

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
B = A.with_rescaled_row(0, 2)
print('A', A)
print('B', B)
```

#### Adding and Subtracting Rows

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
B = A.with_added_multiple_of_row(1, 0, 2)
print('A', A)
print('B', B)
```

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
B = A.with_added_multiple_of_row(1, 0, -1)
print('A', A)
print('B', B)
```

#### Swapping Rows

We can swap rows with the `.swap_rows()` method.

#### Code

```
A = matrix(QQ, [[1, 2, 3], [4, 5, 6]])
B = A.with_swapped_rows(0, 1)
print('A', A)
print('B', B)
```

## Tags

Primary Tags:

Secondary Tags:

A list of possible tags can be found at The WeBWorK Open Problem Library. For linear algebra tags see the Curated Courses Project.

## Related Cells

Any related cells go here. Provide a link to the page containing the information about the cell.

## Attribute

Permalink:

Author: R. Beezer

Date: 24 Feb 2020 15:23

Submitted by: Zane Corbiere