linalg::addRow
-- linear
combination of matrix rowslinalg::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).
linalg::addRow(A, r1, r2, s)
A |
- | 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 |
a matrix of the same domain type as A
.
linalg::addCol
,
linalg::row
, linalg::multCol
, linalg::multRow
The 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 | +- -+
The 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]
If 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 | +- -+