POLRG

 


   more...

Evaluates a real general matrix polynomial.

Required Arguments

AN by N matrix for which the polynomial is to be computed. (Input)

COEF — Vector of length NCOEF containing the coefficients of the polynomial in order of increasing power. (Input)

BN by N matrix containing the value of the polynomial evaluated at A. (Output)

Optional Arguments

N — Order of the matrix A. (Input)
Default: N = SIZE (A,1).

LDA — Leading dimension of A exactly as specified in the dimension statement of the calling program. (Input)
Default: LDA = SIZE (A,1).

NCOEF — Number of coefficients. (Input)
Default: NCOEF = SIZE (COEF,1).

LDB — Leading dimension of B exactly as specified in the dimension statement of the calling program. (Input)
Default: LDB = SIZE (B,1).

FORTRAN 90 Interface

Generic: CALL POLRG (A, COEF, B [])

Specific: The specific interface names are S_POLRG and D_POLRG.

FORTRAN 77 Interface

Single: CALL POLRG (N, A, LDA, NCOEF, COEF, B, LDB)

Double: The double precision name is DPOLRG.

Description

Let m = NCOEF and c = COEF.

The routine POLRG computes the matrix polynomial

 

using Horner’s scheme

 

where I is the N ×  N identity matrix.

Comments

Workspace may be explicitly provided, if desired, by use of P2LRG/DP2LRG. The reference is

CALL P2LRG (N, A, LDA, NCOEF, COEF, B, LDB, WORK)

The additional argument is

WORK — Work vector of length N * N.

Example

This example evaluates the matrix polynomial 3I + A + 2A2, where A is a 3 ×  3 matrix.

 

USE POLRG_INT

USE WRRRN_INT

 

IMPLICIT NONE

! Declare variables

INTEGER LDA, LDB, N, NCOEF

PARAMETER (N=3, NCOEF=3, LDA=N, LDB=N)

!

REAL A(LDA,N), B(LDB,N), COEF(NCOEF)

! Set values of A and COEF

!

! A = ( 1.0 3.0 2.0 )

! ( -5.0 1.0 7.0 )

! ( 1.0 5.0 -4.0 )

!

! COEF = (3.0, 1.0, 2.0)

!

DATA A/1.0, -5.0, 1.0, 3.0, 1.0, 5.0, 2.0, 7.0, -4.0/

DATA COEF/3.0, 1.0, 2.0/

!

! Evaluate B = 3I + A + 2*A**2

CALL POLRG (A, COEF, B)

! Print B

CALL WRRRN ('B = 3I + A + 2*A**2', B)

END

Output

 

B = 3I + A + 2*A**2

1 2 3

1 -20.0 35.0 32.0

2 -11.0 46.0 -55.0

3 -55.0 -19.0 105.0