svdsketch

Aproximação SVD de baixo posto escolhida automaticamente para atingir uma tolerância.

Categoria: Mathematics > Linear Algebra

Sintaxe

[U, S, V] = svdsketch(A)

Retorna uma SVD truncada cujo posto é escolhido para atingir a tolerância padrão sqrt(eps).

[U, S, V] = svdsketch(A, tol)

Usa a tolerância relativa tol para norm(U*S*V' - A, 'fro')/norm(A, 'fro').

Descrição

Não se informa o posto. A função faz a aproximação crescer até que o erro relativo fique abaixo da tolerância, então uma matriz cujos valores singulares decaem rápido dá um k pequeno, e uma tolerância folgada dá um ainda menor.

Destina-se a matrizes grandes em que uma resposta aproximada basta e uma svd completa é cara demais.

Argumentos de entrada

A
Matriz numérica.
tol
Tolerância relativa de aproximação, um escalar em (0, 1).

Argumentos de saída

U, S, V
Fatores da aproximação A ~ U*S*V', com o mesmo número k de colunas em U e V, e S uma matriz diagonal k-por-k.

Exemplo

Posto escolhido pela tolerância

A = magic(4);
[U, S, V] = svdsketch(A);
size(S)
norm(U*S*V' - A) < 1e-6
Saída
ans = 1×2

     3     3
ans = logical
   1

Veja também

svd svds svdappend