Files
louiscklaw 9035c1312b update,
2025-02-01 02:09:32 +08:00

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')
```