Previous Page Next Page Contents

linalg::isPosDef -- test a matrix for positive definiteness

Introduction

linalg::isPosDef(A) checks whether the matrix A is positive definite, so that transpose(x)*A*x > 0 for arbitrary vectors x <> 0.

Call(s)

linalg::isPosDef(A)

Parameters

A - a matrix of a domain of category Cat::Matrix

Returns

either TRUE or FALSE.

Side Effects

Properties of identifiers are taken into account.

Related Functions

linalg::factorCholesky, linalg::isHermitean

Details

Example 1

Here is an example of a positive definite matrix:

>> MatR := Dom::Matrix( Dom::Real ):
   A := MatR([[14, 6, 9], [6, 17, -4], [9, -4, 13]])
                             +-            -+
                             |  14,  6,  9  |
                             |              |
                             |   6, 17, -4  |
                             |              |
                             |   9, -4, 13  |
                             +-            -+
>> linalg::isPosDef(A)
                                   TRUE

The following matrix is not positive definite:

>> B := MatR([[1, 2, 3], [2, 3, 4], [5, 6, 7]])
                               +-         -+
                               |  1, 2, 3  |
                               |           |
                               |  2, 3, 4  |
                               |           |
                               |  5, 6, 7  |
                               +-         -+
>> linalg::isPosDef(B)
                                   FALSE

Example 2

linalg::isPosDef in general does not work for matrices with symbolic entries. It may respond with an error message (because the system in general cannot decide whether a symbolic component is positive), such as for the following matrix:

>> delete a, b:
   C := matrix([[a, b], [b, a]])
                                +-      -+
                                |  a, b  |
                                |        |
                                |  b, a  |
                                +-      -+
>> linalg::isPosDef(C)
      Error: cannot check whether matrix component is positive \
      [linalg::factorCholesky]

However, properties of identifiers are taken into account, so that, for example, linalg::isPosDef is able to perform the test correctly for the following matrix:

>> assume(a > 1): C := matrix([[a, 1], [1, a]]):
>> linalg::isPosDef(C)
                                   TRUE

Note that such computations depend on the power of the underlying property mechanism implemented in the library property.




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000