Difference between revisions of "SingularValueDecomp"
m (adding doc status category stub page) |
|||
Line 4: | Line 4: | ||
Computes the singular value decomposition of a matrix. | Computes the singular value decomposition of a matrix. | ||
− | + | = SingularValueDecomp(a, i, j, j2) = | |
+ | |||
+ | [[SingularValueDecomp]]() (singular value decomposition) is often used with sets of equations or matrices that are singular or ill-conditioned (that is, very close to singular). It factors a matrix ''a'', indexed by ''i'' and ''j'', with ''[[Size]](i)>=[[Size]](i)'', into three matrices, ''U'', ''W'', and ''V'', such that: | ||
+ | :a = U . W . V | ||
+ | where ''U'' and ''V'' are orthogonal matrices and ''W'' is a diagonal matrix. ''U'' is dimensioned by ''i'' and ''j'', ''W'' by ''j'' and ''j2'', and ''V'' by ''j'' and ''j2''. In Analytica notation: | ||
+ | |||
+ | Variable A := Sum(Sum(U*W, J) * Transpose(V, J, J2), J2) | ||
+ | |||
+ | The index ''j2'' must be the same size as ''j'' and is used to index the resulting ''W'' and ''V'' arrays. [[SingularValueDecomp]]() returns an array of three elements indexed by a special system index named [[SvdIndex]] with each element, ''U'', ''W'', and ''V'', being a reference to the corresponding array. | ||
+ | Use the [[Using References|# (dereference) operator]] to obtain the matrix value from each reference, as in: | ||
+ | |||
+ | Index J2 := CopyIndex(J) | ||
+ | Variable SvdResult := SingularValueDecomp(A, I, J, J2) | ||
+ | Variable U := #SvdResult[SvdIndex='U'] | ||
+ | Variable W := #SvdResult[SvdIndex='W'] | ||
+ | Variable V := #SvdResult[SvdIndex='V'] |
Revision as of 23:00, 3 September 2008
Computes the singular value decomposition of a matrix.
SingularValueDecomp(a, i, j, j2)
SingularValueDecomp() (singular value decomposition) is often used with sets of equations or matrices that are singular or ill-conditioned (that is, very close to singular). It factors a matrix a, indexed by i and j, with Size(i)>=Size(i), into three matrices, U, W, and V, such that:
- a = U . W . V
where U and V are orthogonal matrices and W is a diagonal matrix. U is dimensioned by i and j, W by j and j2, and V by j and j2. In Analytica notation:
Variable A := Sum(Sum(U*W, J) * Transpose(V, J, J2), J2)
The index j2 must be the same size as j and is used to index the resulting W and V arrays. SingularValueDecomp() returns an array of three elements indexed by a special system index named SvdIndex with each element, U, W, and V, being a reference to the corresponding array. Use the # (dereference) operator to obtain the matrix value from each reference, as in:
Index J2 := CopyIndex(J) Variable SvdResult := SingularValueDecomp(A, I, J, J2) Variable U := #SvdResult[SvdIndex='U'] Variable W := #SvdResult[SvdIndex='W'] Variable V := #SvdResult[SvdIndex='V']
Enable comment auto-refresher