linalg 1.8.2
A linear algebra library that provides a user-friendly interface to several BLAS and LAPACK routines.
Loading...
Searching...
No Matches
linalg::solve_qr Interface Reference

Solves a system of M QR-factored equations of N unknowns. More...

Public Member Functions

 solve_qr_no_pivot_mtx
 
 solve_qr_no_pivot_mtx_cmplx
 
 solve_qr_no_pivot_vec
 
 solve_qr_no_pivot_vec_cmplx
 
 solve_qr_pivot_mtx
 
 solve_qr_pivot_mtx_cmplx
 
 solve_qr_pivot_vec
 
 solve_qr_pivot_vec_cmplx
 

Detailed Description

Solves a system of M QR-factored equations of N unknowns.

Syntax 1 (No Pivoting)
subroutine solve_qr(real(real64) a(:,:), real(real64) tau(:), real(real64) b(:,:), optional real(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(complex(real64) a(:,:), complex(real64) tau(:), complex(real64) b(:,:), optional complex(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(real(real64) a(:,:), real(real64) tau(:), real(real64) b(:), optional real(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(complex(real64) a(:,:), complex(real64) tau(:), complex(real64) b(:), optional complex(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
Parameters
[in]aOn input, the M-by-N QR factored matrix as returned by qr_factor. On output, the contents of this matrix are restored. Notice, M must be greater than or equal to N.
[in]tauA MIN(M, N)-element array containing the scalar factors of the elementary reflectors as returned by qr_factor.
[in]bOn input, the M-by-NRHS right-hand-side matrix. On output, the first N rows are overwritten by the solution matrix X.
[out]workAn optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.
[out]olworkAn optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
  • LA_ARRAY_SIZE_ERROR: Occurs if any of the input arrays are not sized appropriately.
  • LA_OUT_OF_MEMORY_ERROR: Occurs if local memory must be allocated, and there is insufficient memory available.
Syntax 2 (With Pivoting)
subroutine solve_qr(real(real64) a(:,:), real(real64) tau(:), integer(int32) jpvt(:), real(real64) b(:,:), optional real(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(complex(real64) a(:,:), complex(real64) tau(:), integer(int32) jpvt(:), complex(real64) b(:,:), optional complex(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(real(real64) a(:,:), real(real64) tau(:), integer(int32) jpvt(:), real(real64) b(:), optional real(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
subroutine solve_qr(complex(real64) a(:,:), complex(real64) tau(:), integer(int32) jpvt(:), complex(real64) b(:), optional complex(real64) work(:), optional integer(int32) olwork, optional class(errors) err)
Parameters
[in]aOn input, the M-by-N QR factored matrix as returned by qr_factor. On output, the contents of this matrix are altered.
[in]tauA MIN(M, N)-element array containing the scalar factors of the elementary reflectors as returned by qr_factor.
[in]jpvtAn N-element array, as output by qr_factor, used to track the column pivots.
[in]bOn input, the MAX(M, N)-by-NRHS matrix where the first M rows contain the right-hand-side matrix B. On output, the first N rows are overwritten by the solution matrix X.
[out]workAn optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.
[out]olworkAn optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.
[in,out]errAn optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. Possible errors and warning messages that may be encountered are as follows.
  • LA_ARRAY_SIZE_ERROR: Occurs if any of the input arrays are not sized appropriately.
  • LA_OUT_OF_MEMORY_ERROR: Occurs if local memory must be allocated, and there is insufficient memory available.
Usage
The following example illustrates the solution of a system of equations using QR factorization.
program example
use iso_fortran_env, only : real64, int32
use linalg
implicit none
! Local Variables
real(real64) :: a(3,3), tau(3), b(3)
integer(int32) :: i, pvt(3)
! Build the 3-by-3 matrix A.
! | 1 2 3 |
! A = | 4 5 6 |
! | 7 8 0 |
a = reshape( &
[1.0d0, 4.0d0, 7.0d0, 2.0d0, 5.0d0, 8.0d0, 3.0d0, 6.0d0, 0.0d0], &
[3, 3])
! Build the right-hand-side vector B.
! | -1 |
! b = | -2 |
! | -3 |
b = [-1.0d0, -2.0d0, -3.0d0]
! The solution is:
! | 1/3 |
! x = | -2/3 |
! | 0 |
! Compute the QR factorization, using pivoting
pvt = 0 ! Zero every entry in order not to lock any column in place
call qr_factor(a, tau, pvt)
! Compute the solution. The results overwrite b.
call solve_qr(a, tau, pvt, b)
! Display the results.
print '(A)', "QR Solution: X = "
print '(F8.4)', (b(i), i = 1, size(b))
! Notice, QR factorization without pivoting could be accomplished in the
! same manner. The only difference is to omit the PVT array (column pivot
! tracking array).
end program
Computes the QR factorization of an M-by-N matrix.
Definition linalg.f90:1121
Solves a system of M QR-factored equations of N unknowns.
Definition linalg.f90:2557
Provides a set of common linear algebra routines.
Definition linalg.f90:145
The above program produces the following output.
QR Solution: X =
0.3333
-0.6667
0.0000
See Also

Definition at line 2557 of file linalg.f90.


The documentation for this interface was generated from the following file: