Main Content

fixed.singularValueUpperBound

Upper bound of largest singular value of matrix

Since R2022b

Description

svdUpperBound = fixed.singularValueUpperBound(m,n,max_abs_A) returns an upper bound of the largest singular value of an m-by-n matrix A, where m >= n and max_abs_A >= max(abs(A(:))).

example

svdUpperBound = fixed.singularValueUpperBound(m,n,max_abs_A,regularizationParameter) returns an upper bound of the largest singular value of the matrix [regularizationParameter*eye(n); A], where A is an m-by-n matrix with m >= n.

example

Examples

collapse all

Define a real-valued matrix, A.

m = 5;
n = 3;
A = ones(m,n);
max_abs_A = 1;

Determine an upper bound for the largest singular value of the matrix.

svdUpperBound = fixed.singularValueUpperBound(m,n,max_abs_A)
svdUpperBound = 
3.8730

Compare to the actual largest singular value of the matrix.

actual_largest_singular_value = max(svd(A))
actual_largest_singular_value = 
3.8730

Use the helper function realRandomLowRankMatrix to define a real-valued, low rank matrix A.

m = 300;
n = 10;
rankA = 3;
A = realRandomLowRankMatrix(m,n,rankA);

Determine an upper bound for the largest singular value of the matrix of the Tikhonov regularized problem.

regularizationParameter = 0.01;
A = [regularizationParameter*eye(n);A];
svdUpperBound = fixed.singularValueUpperBound(m,n,max(abs(A(:))),regularizationParameter)
svdUpperBound = 
54.7823

Compare to the actual largest singular value of the matrix.

actual_largest_singular_value = max(svd(A))
actual_largest_singular_value = 
13.3424

Input Arguments

collapse all

Number of rows in matrix A, specified as a positive integer-valued scalar. The number of rows, m, must be greater than or equal to the number of columns, n.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Number of columns in matrix A, specified as a positive integer-valued scalar. The number of rows, m, must be greater than or equal to the number of columns, n.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Maximum of absolute value of matrix A, specified as a scalar.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Regularization parameter, specified as a nonnegative scalar.

Data Types: single | double

Algorithms

The upper bound for the largest singular value of matrix A is svdUpperBound = sqrt(m*n)*max(abs(A(:))). If there is a regularization parameter, then the upper bound is svdUpperBound = sqrt(m*n)*max(abs(A(:))) + abs(regularizationParameter) [1][2][3].

References

[1] Bryan, Thomas A., Jenna L. Warren, Brenda Zhuang, and Jessica Clayton. Continuation in Part for "Systems and Methods for Design Parameter Selection." U.S. Patent Application No. 16/947, 130. 2022.

[2] Bryan, Thomas A., and Jenna L. Warren. "Systems and Methods for Design Parameter Selection." U.S. Patent Application No. 16/947, 130. 2020.

[3] Chen, Zizhong, and Jack J. Dongarra. "Condition Numbers of Gaussian Random Matrices." SIAM Journal on Matrix Analysis and Applications 27, no. 3 (July 2005): 603—620. https://doi.org/10.1137/040616413.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2022b