LinearAlgebra
BidiagonalForm
reduce a Matrix to bidiagonal form
Calling Sequence
Parameters
Description
Examples
BidiagonalForm(A, out, ip, options, outopts)
A
-
Matrix
out
(optional) equation of the form output = obj where obj is one of 'U', 'B', 'Vt', or 'NAG', or a list containing one or more of these names; selects result objects to compute
ip
(optional) equation of the form inplace=true or false; specifies if output overwrites input
options
(optional); constructor options for the result object(s)
outopts
(optional) equation(s) of the form outputoptions[o] = list where o is one of 'U', 'B', 'Vt', or 'NAG'; constructor options for the specified result object
The BidiagonalForm(A) function returns a Matrix in bidiagonal form. This routine operates in the floating-point domain. Hence, the entries in Matrix A must necessarily be of type complex(numeric).
A bidiagonal Matrix has nonzero entries only on the main diagonal and either the first super-diagonal or the first subdiagonal.
The original Matrix A and the left and right reduction Matrices U and Vt are related by A=U·B·Vt, where B is the bidiagonal form of A.
If A is real, then U and Vt are orthogonal.
If A is complex, then U and Vt are unitary.
If A is an m x n Matrix and m<n, then B is lower bidiagonal. If m≥n, then B is upper bidiagonal.
If the Matrix A does not have a floating-point datatype, then a working copy which does is made in agreement with the environment variable UseHardwareFloats.
The output option (out) determines the content of the returned expression sequence.
Depending on what is included in the output option, an expression sequence containing one or more of the factors U (the left reduction Matrix), B (the bidiagonal form), or V (the right reduction Matrix) can be returned. If output is a list, the objects are returned in the same order as specified in the list.
If NAG is included in the output list, then the returned objects are an expression sequence consisting of a Matrix, a Vector, and a Vector. The second and third Vector objects contain additional details of the orthogonal/unitary Matrices U and Vt. The returned objects are encoded in NAG format:
If m≥n, then the diagonal and first super-diagonal of the first returned object B contain the upper bidiagonal solution. Elements below the diagonal are overwritten by details of the orthogonal Matrix U and elements above the first super-diagonal are overwritten by details of the orthogonal Matrix Vt.
If m<n, then the diagonal and the first subdiagonal of the first returned object B contain the lower bidiagonal solution. Elements below the first subdiagonal are overwritten by details of the orthogonal Matrix U and elements above the diagonal are overwritten by details of the orthogonal Matrix Vt.
The specified output denoted by output='NAG' precludes the output of any other specified objects.
The inplace option (ip) determines where the result is returned. If given as inplace=true, the result overwrites the first argument. If given as inplace=false, or if this option is not included in the calling sequence, the result is returned in a new Matrix.
The condition inplace=true can be abbreviated to inplace.
The inplace option must be used with caution since, if the operation fails, the original Matrix argument may be corrupted.
The constructor options provide additional information (readonly, shape, storage, order, datatype, and attributes) to the Matrix constructor that builds the result(s). These options may also be provided in the form outputoptions[o]=[...], where [...] represents a Maple list. If a constructor option is provided in both the calling sequence directly and in an outputoptions[o] option, the latter takes precedence (regardless of the order).
The following list indicates permissible values for index [o] of outputoptions with their corresponding meaning.
U
left reducing Matrix
B
bidiagonal form
Vt
right reducing Matrix
NAG
NAG format of the reduction
The inplace and constructor options are mutually exclusive.
This function is part of the LinearAlgebra package, and so it can be used in the form BidiagonalForm(..) only after executing the command with(LinearAlgebra). However, it can always be accessed through the long form of the command by using LinearAlgebra[BidiagonalForm](..).
with⁡LinearAlgebra:
UseHardwareFloats≔false
A≔RandomMatrix⁡4,generator=−10..10
A≔95−5−483−10−4−10−61−10896−4
B≔BidiagonalForm⁡A
B≔−17.5783958312.459643610.0.0.1.611363883−12.250535730.0.0.−3.981959872−3.8469005390.0.0.−11.06483232
U,Vt≔BidiagonalForm⁡A,output=U,Vt
U,Vt≔−0.511992112−0.1213173437−0.81732255840.2347978218−0.4551040994−0.65470099200.2209216328−0.56164090170.5688801242−0.7350840489−0.15052363460.3367038477−0.4551040994−0.12767205770.51041170130.7183731618,1.00.0.0.0.−0.9177221160.39722300541.605182349×10−100.−0.1770984061−0.4091583868−0.89511204250.−0.3555590957−0.82146411850.4458412623
U·B·Vt
9.0000000075.000000013−5.000000009−4.0000000098.0000000033.000000005−10.00000000−3.999999995−10.00000000−6.0000000041.000000003−10.000000008.0000000039.0000000026.000000000−4.000000002
See Also
type/complex
type/numeric
Vector
Download Help Document