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úmerokde colunas emUeV, eSuma matriz diagonalk-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