<jupyter_start><jupyter_text>Experimento numérico \ 3- Tema: Variación de tamaños de matrices**Responsable:** <NAME> 0. ObjetivoEste documento pretende mostar los resultados obtenidos con la implementación realizada, en el contexto del comportamiento del método de solución de bloques al variar tamaño de matriz de sistema 1. ConsideracionesAl respecto de los experimentos numéricos realizados para consolidar el presente reporte, tales se basan en las siguientes premisas:En este sentido, en particular para cada experimento realizado, se reportan según resulte aplicable:* los parámetros empleados en la simulaciones, * las dimensiones de las matrices y vectores involucrados, así como el prodecimiento pseudo-aleatorio que les dio origen, * 1) el tiempo involucrado en correr los experimentos, * 2) número de condición de las matrices pseudo-aleatorias, y * 3) el error relativo obtenido, para la solución de un sistema lineal de la forma $Ax=b$, es decir el cociente$$|| Ax - b ||_2 / || b ||_2$$* 4) La norma de $A$ y de la matriz obtenida al rearmar A tras multiplica las matrices resultantes de la aproximación de la descomposición SVD vía el algoritmo **One-Sided Jacobi**El siguiente experimento fue realizado en una máquina con las siguientes características:MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports)* Procesador: 2.4 GHz Intel Core i5 de cuatro núcleos* Memoria: 8 GB 2133 MHz LPDDR3 1.1 Consideraciones sobre la infraestructura empleada**Especificaciones de ambiente común de trabajo**Para realizar el presente experimento numérico se ha empleado la imagen de docker basada en R del curso MNO 2020 (palmoreck/jupyterlab_r_kernel:1.1.0)```docker run --rm -v `pwd`:/datos --name jupyterlab_r_kernel_local -p 8888:8888 -d palmoreck/jupyterlab_r_kernel:1.1.0```*Nota:* el comando "-v \`pwd\`:/datos", permite montar el directorio actual en donde el usuario se encuentre situada en terminal como un volumen de la imagen de docker, dentro del directorio "/datos". 2. Experimento numérico**Objetivo**Probar el desempeño de la eliminación por bloques por medio de SVD con respecto a diferentes tamaños de matrices, es decir matrices de tamaño: 10x10, 100x100 y 1000x1000A tal respecto, se destaca que se realizó este experimentos buscando probar [Pendiente: desarrollo]**Cargamos codigo desarrollado previamente*** **utils.R:** contiene las funciones auxiliares desarrolladas para el proyecto* **00-load.R:** la implementación del método de eliminación por bloques, empleando la aproximación de la descomposición SVD vía el algoritmo **One-Sided Jacobi**.<jupyter_code>## Instalamos paquetes
rm(list = ls())

paquetes <- c('matrixcalc')

instalar <- function(paquete) {
  if (!require(paquete,character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)) {
    install.packages(as.character(paquete), dependecies = TRUE, repos = "http://cran.us.r-project.org")
    library(paquete, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)
  }
}


lapply(paquetes, instalar)
## Cargamos paquetes necesarios
library("matrixcalc")
library(matlib)
library(tictoc)
#source("metadata.R")
source("utils.R")
source("00-load.R")<jupyter_output>Warning message in rgl.init(initValue, onlyNULL):
“RGL: unable to open X11 display”
Warning message:
“'rgl.init' failed, running with 'rgl.useNULL = TRUE'.”

Attaching package: ‘matlib’


The following object is masked from ‘package:matrixcalc’:

    vec<jupyter_text>2.1 Experimento 3.1 Este experimento se basa en los siguientes parámetros [Pendiente: por favor ajustar tabla según experimento]|  |         Parámetros         | Valor/Rango de valores | Comentarios ||:-:|:--------------------------:|:----------------------:|:-----------:|| 1 |     Dimensiones de $A$     |     10x10              |             || 2 |        Dimensión $b$       |     10x1               |             || 3 |         Tolerancia         |     $10^{-8}$            |             || 4 |          Maxsweep          |     5                  |             || 5 |          corte             |     5                  | Corte de bloque            || 6 |   Metodo pseudo-aleatorio  |     números reales     |Números aleatorios de la distribución normal estándar|| 7 | Numero de condición de $A$ |     9.74               |cond(A) = $|| A ||.|| A^{-1}||$     |**Codigo:** breve descrición de que hace el código y resultados.<jupyter_code>set.seed(231)
n= 10**1

A = matrix(rnorm(n**2), ncol=n)
b = matrix(rnorm(n), ncol=1)
TOL = 10**-8
tic()
z<-eliminacion_bloques(A,b,n/2,10^-8,5)
toc()


#Condición
norm(A,"2")*norm(inv(A),"2")
#Error relativo
norm(A%*%z-b,"2")/norm(b,"2")
#Error factorización
svd_aprox = svd_jacobi_aprox(A,TOL,5)
norm(A-svd_aprox$U%*%svd_aprox$S%*%t(svd_aprox$V),"2")<jupyter_output>0.059 sec elapsed<jupyter_text>**Resultados**Los resultados obtenidos se resumen a través de la siguiente tabla [Pendiente: por favor ajustar tabla según experimento]|  |                Parámetros                | Valor/Rango de valores |            Comentarios            ||:-:|:----------------------------------------:|:----------------------:|:---------------------------------:|| 1 |            Tiempo de ejecución           |      0.1 sec           |                                   || 2 |      Error relativo $||Ax-b||/||b||$     |      1.78749566520204  |                                   || 3 | Error factorizacion SVD $||A-U\cdot \Sigma \cdot V^T||$ |  3.67028106314907e-15 |                     |  2.2  Experimento 3.2Este experimento se basa en los siguientes parámetros [Pendiente: por favor ajustar tabla según experimento]|  |         Parámetros         | Valor/Rango de valores | Comentarios ||:-:|:--------------------------:|:----------------------:|:-----------:|| 1 |     Dimensiones de $A$     |    100x100                    |             || 2 |        Dimensión $b$       |    100x1                    |             || 3 |         Tolerancia         |    $10^{-8}$                     |             || 4 |          Maxsweep          |    5                    |             || 5 |     Corte    |    50                  |             || 6 |   Metodo pseudo-aleatorio  |     números reales     |Números aleatorios de la distribución normal estándar|| 7 | Numero de condición de $A$ |     109.17              |cond(A) = $|| A ||.|| A^{-1}||$     |**Codigo:** breve descrición de que hace el código y resultados.<jupyter_code>set.seed(231)
n= 10**2

A = matrix(rnorm(n**2), ncol=n)
b = matrix(rnorm(n), ncol=1)
TOL = 10**-8
tic()
z<-eliminacion_bloques(A,b,n/2,10^-8,5)
toc()


#Condición
norm(A,"2")*norm(inv(A),"2")
#Error relativo
norm(A%*%z-b,"2")/norm(b,"2")
#Error factorización
svd_aprox = svd_jacobi_aprox(A,TOL,5)
norm(A-svd_aprox$U%*%svd_aprox$S%*%t(svd_aprox$V),"2")<jupyter_output>37.399 sec elapsed<jupyter_text>**Resultados**Los resultados obtenidos se resumen a través de la siguiente tabla [Pendiente: por favor ajustar tabla según experimento]|  |                Parámetros                | Valor/Rango de valores |            Comentarios            ||:-:|:----------------------------------------:|:----------------------:|:---------------------------------:|| 1 |            Tiempo de ejecución           |      37.399 sec          |                                   || 2 |      Error relativo $||Ax-b||/||b||$     |      1.1633441561769 |                                   || 3 | Error factorizacion SVD $||A-U\cdot \Sigma \cdot V^T||$ |  9.09482723558874e-14 |                     |  2.3  Experimento 3.3 Este experimento se basa en los siguientes parámetros [Pendiente: por favor ajustar tabla según experimento]|  |         Parámetros         | Valor/Rango de valores | Comentarios ||:-:|:--------------------------:|:----------------------:|:-----------:|| 1 |     Dimensiones de $A$     |     1000x1000              |             || 2 |        Dimensión $b$       |     1000x1               |             || 3 |         Tolerancia         |     $10^{-8}$            |             || 4 |          Maxsweep          |     5                  |             || 5 |          corte             |     500                  | Corte de bloque            || 6 |   Metodo pseudo-aleatorio  |     números reales     |Números aleatorios de la distribución normal estándar|| 7 | Numero de condición de $A$ |     9.74               |cond(A) = $|| A ||.|| A^{-1}||$     |**Codigo:** breve descrición de que hace el código y resultados.<jupyter_code>set.seed(231)
n= 10**3

A = matrix(rnorm(n**2), ncol=n)
b = matrix(rnorm(n), ncol=1)
TOL = 10**-8
tic()
z<-eliminacion_bloques(A,b,n/2,10^-8,5)
toc()



#Condición
norm(A,"2")*norm(inv(A),"2")
#Error relativo
norm(A%*%z-b,"2")/norm(b,"2")
#Error factorización
svd_aprox = svd_jacobi_aprox(A,TOL,5)
norm(A-svd_aprox$U%*%svd_aprox$S%*%t(svd_aprox$V),"2")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1582537517053206, 'fraction_numerical': 0.035925420645748066, 'mean_word_length': 2.2341911764705884, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 30, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '447411', 'license': 'MIT', 'n_tokens_mistral': 3111, 'n_tokens_neox': 2880, 'n_words': 795, 'path': 'results/experimentos/.ipynb_checkpoints/Experimento-3-checkpoint.ipynb', 'repo_name': 'mno-2020-gh-classroom/ex-modulo-3-comp-matricial-svd-czammar', 'size': '8811'}