DESCRIPTION Students: Please keep in mind the OMSI rules. Save your files often, make sure OMSI fills your entire screen at all times, etc. Remember that clicking CopyQtoA will copy the entire question box to the answer box. In questions involving code which will PARTIALLY be given to you in the question specs, you may need add new lines. There may not be information given as to where the lines should be inserted. MAKE SURE TO RUN THE CODE IN PROBLEMS THAT INVOLVE CODE! QUESTION -ext .R -run 'Rscript ./omsi_answer1.R' (R code answer, 40 points): In (6.25), any matrix A is expressed as a sum of rank-1 matrices derived from A's SVD. Write a function that returns each of the partial sums in an R list. Element j of the list will consist of the sum of the first j terms in (6.25). SVDsums <- function(a) { } set.seed(9999) m <- matrix(sample(1:25,12),nrow=3) m # [,1] [,2] [,3] [,4] # [1,] 6 3 8 4 # [2,] 9 10 23 18 # [3,] 24 2 22 17 SVDsums(m)[[2]] # [,1] [,2] [,3] [,4] # [1,] 5.520988 1.967282 7.388633 5.632276 # [2,] 9.075294 10.162329 23.096098 17.743429 # [3,] 24.081445 2.175589 22.103948 16.722470 QUESTION (Text answer, 30 points.) How do we know the terms in (6.25) are of rank 1? QUESTION -ext .R -run 'Rscript ./omsi_answer3.R' (R code answer, 30 points.) Using the matrix m in Question 1, change the (3,1) element from 24 to NA. Then apply softImpute(), with default values to all arguments. Write code that calculates and PRINTS OUT the Frobenius norm of the resulting approximation error to m.