SVD - Norm Connection
Purpose
There is a close connection between singular values of SVD and maximum stretch that happens as a result of transformation
What happens when a matrix hits a unit circle ? .Consider a matrix
> A <- matrix(data = c(-2, 11, -10, 5), nrow = 2, ncol = 2, byrow = T) > print(A) [,1] [,2] [1,] -2 11 [2,] -10 5 |
Transform unit circle
> N <- 1000 > theta <- seq(0, 2 * pi, length = N) > x <- cos(theta) > y <- sin(theta) > B <- A %*% t(cbind(x, y)) > B <- t(B) |
> par(mfrow = c(1, 1)) > plot(x, y, ylim = c(-20, 20), xlim = c(-20, 20), col = "blue") > par(new = T) > plot(B[, 1], B[, 2], ylim = c(-20, 20), xlim = c(-20, 20), col = "red") > abline(v = 0) > abline(h = 0) |
The maximum stretch is
> print(max(sqrt(B[, 1]^2 + B[, 2]^2))) [1] 14.14213 |
The same value can be obtained by looking at SVD
maximum value of the singular value
> print(max(svd(A)$d)) [1] 14.14214 |