Previous Page Next Page Contents

linalg::addRow -- linear combination of matrix rows

Introduction

linalg::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)

Parameters

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

Returns

a matrix of the same domain type as A.

Related Functions

linalg::addCol, linalg::row, linalg::multCol, linalg::multRow

Example 1

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  |
                               +-         -+

Example 2

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]

Example 3

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      |
                      +-                          -+




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000