linalg::addRow -- linear
combination of matrix rows
Introductionlinalg::addRow(A, r1, r2, s) returns a
copy of the matrix A in which row r2 of
A is replaced by s*row(A,r1) + row(A,r2).
Call(s)linalg::addRow(A, r1, r2, s)
ParametersA |
- | an m x n matrix of a domain of category
Cat::Matrix |
r1, r2 |
- | the row indices: positive integers <= m |
s |
- | an expression that can be converted into the component
ring of A |
Returnsa matrix of the same domain type as A.
Related
Functionslinalg::addCol,
linalg::row, linalg::multCol, linalg::multRow
Example
1The following defines a 3x3 matrix over the integers:
>> A := Dom::Matrix(Dom::Integer)(
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
)
+- -+
| 1, 2, 3 |
| |
| 4, 5, 6 |
| |
| 7, 8, 9 |
+- -+
We replace the 2nd row by -row(A,1) + row(A,2), i.e., we subtract the first row from the second:
>> linalg::addRow(A, 1, 2, -1)
+- -+
| 1, 2, 3 |
| |
| 3, 3, 3 |
| |
| 7, 8, 9 |
+- -+
Example
2The following defines a 2x3 matrix over the reals:
>> B := Dom::Matrix(Dom::Real)(
[[sin(2), 0, 1], [1, PI, 0]]
)
+- -+
| sin(2), 0, 1 |
| |
| 1, PI, 0 |
+- -+
If s is an expression that does not
represent a real number then an error message is reported. The
following tries to replace the 1st row by x*row(B,2) +
row(B,1), where x is an identifier which cannot be
converted into the component ring Dom::Real of B:
>> delete x: linalg::addRow(B, 2, 1, x)
Error: unable to convert x [linalg::addRow]
Example
3If symbolic expressions are involved, then one may
define matrices over the component ring created by Dom::ExpressionField. The
following example defines a matrix over this default component
ring:
>> delete a11, a12, a21, a22, x: C := matrix([[a11, a12], [a21, a22]])
+- -+
| a11, a12 |
| |
| a21, a22 |
+- -+
We retry the input from the previous example:
>> linalg::addRow(C, 2, 1, x)
+- -+
| a11 + x a21, a12 + x a22 |
| |
| a21, a22 |
+- -+