68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
---
|
|
title: "hw5"
|
|
author: "Mark Pearl"
|
|
date: "7/25/2021"
|
|
output: html_document
|
|
---
|
|
|
|
```{r setup, include=FALSE}
|
|
knitr::opts_chunk$set(echo = TRUE)
|
|
library(stats)
|
|
library(mrbsizeR)
|
|
library(base)
|
|
library(QZ)
|
|
library(CVXR)
|
|
```
|
|
|
|
## HW5 Q1 notebook
|
|
|
|
```{r q1}
|
|
|
|
s_vector <- seq(1,128,1)
|
|
source('l1eq_pd.R')
|
|
|
|
num_experiments <- 20
|
|
error_matrix <- matrix(0, num_experiments, 128)
|
|
|
|
M <- 512
|
|
N <- 256
|
|
x_matrix <- matrix(0, 128, 128)
|
|
error_vector <- rep(0,128)
|
|
x_num <- seq(1,num_experiments,1)
|
|
|
|
#Iterate through each experiement created
|
|
for (num_x in x_num) {
|
|
print(paste0("Running experiment number ",num_x))
|
|
x_full <- rsparsematrix(512, 1, nnz = 512, rand.x=rnorm)
|
|
#Create A matrix consisting of guassian distribution of i.i.d variables 256 (rows) X 512 (columns)
|
|
A <- matrix(rnorm(N*M), nrow = N, ncol = M)
|
|
#Iterate through each value in the s-vector representing number of sparse element in vector x
|
|
for (s in s_vector) {
|
|
x <- numeric(512)
|
|
ind <- sample(1:512, s) # select s random locations which will have non zero values
|
|
for (i in ind){
|
|
x[i] <- x_full[i]
|
|
}
|
|
#x <- rsparsematrix(512, 1, nnz = s, rand.x=rnorm)
|
|
y <- A%*%x
|
|
x0 <- t(A)%*%y
|
|
xp <- l1eq_pd(x0,A,y)
|
|
print(paste0(s,"/128 ","LHS: ",norm(xp-x,type='2'),"<=","RHS: ",10^-4*norm(x,type='2')," ",norm(xp-x,type='2') <= 10^-4*norm(x,type='2')))
|
|
|
|
#10^-4*
|
|
if (norm(xp-x,type='2') <= 10^-4*norm(x,type='2')) {
|
|
error_vector[s]=1
|
|
}
|
|
else{
|
|
error_vector[s]=0
|
|
}
|
|
}
|
|
error_matrix[num_x,]=error_vector
|
|
}
|
|
```
|
|
|
|
|
|
``` {r output success/rate}
|
|
plot(colMeans(error_matrix),type='l',xlab='Sparsity',ylab='Success Rate')
|
|
```
|