Problema 3

Simulación de tiempos de vida

Simulamos 1000 instancias de tiempos de vida para cada componente.

library(ggplot2)

# Función para simular el tiempo de vida de un componente
simular_tiempo_vida <- function(mu, sigma, n) {
  rlnorm(n, meanlog = mu, sdlog = sigma)
}

# Parámetros para los componentes
mu_R1_R3 <- 2
sigma_R1_R3 <- 1
mu_R2_R4 <- 1
sigma_R2_R4 <- 0.1

# Simulación de los tiempos de vida para 1000 instancias
n <- 1000
set.seed(123)  # Para reproducibilidad

# Simulamos los tiempos de vida para cada componente
R1 <- simular_tiempo_vida(mu_R1_R3, sigma_R1_R3, n)
R2 <- simular_tiempo_vida(mu_R2_R4, sigma_R2_R4, n)
R3 <- simular_tiempo_vida(mu_R1_R3, sigma_R1_R3, n)
R4 <- simular_tiempo_vida(mu_R2_R4, sigma_R2_R4, n)

A. Simulación del tiempo de vida del sistema

Calculamos el tiempo de vida para cada uno de los tres sistemas.

# Sistema 1 (R1 y R2 en serie)
tiempo_sistema1 <- pmin(R1, R2)

# Sistema 2 (R3 y R4 en paralelo)
tiempo_sistema2 <- pmax(R3, R4)

# Sistema 3 (R1 y R2 en serie, con R3 y R4 en paralelo)
tiempo_sistema3 <- pmin(R1, R2, R3, R4)

# Mostramos los primeros valores simulados para cada sistema
head(tiempo_sistema1)
## [1] 2.460637 2.449795 2.713399 2.682589 2.106580 3.016380
head(tiempo_sistema2)
## [1]  4.429985  9.364612  4.299122 25.008797  8.794582  3.993754
head(tiempo_sistema3)
## [1] 2.460637 2.449795 2.351806 2.535197 2.106580 2.708130

B. Media del tiempo de vida para cada sistema

A continuación, calculamos la media del tiempo de vida para los tres sistemas.

# Estimación de la media del tiempo de vida
media_sistema1 <- mean(tiempo_sistema1)
media_sistema2 <- mean(tiempo_sistema2)
media_sistema3 <- mean(tiempo_sistema3)

# Mostramos las medias
cat("Media del tiempo de vida del Sistema 1: ", media_sistema1, "\n")
## Media del tiempo de vida del Sistema 1:  2.58863
cat("Media del tiempo de vida del Sistema 2: ", media_sistema2, "\n")
## Media del tiempo de vida del Sistema 2:  11.9267
cat("Media del tiempo de vida del Sistema 3: ", media_sistema3, "\n")
## Media del tiempo de vida del Sistema 3:  2.333685

C. Probabilidad de falla antes de 2 meses

Estimamos la probabilidad de que los sistemas fallen antes de los 2 meses.

# Estimación de la probabilidad de falla
prob_sistema1_falla <- mean(tiempo_sistema1 < 2)
prob_sistema2_falla <- mean(tiempo_sistema2 < 2)
prob_sistema3_falla <- mean(tiempo_sistema3 < 2)

# Mostramos las probabilidades
cat("Probabilidad de falla en menos de 2 meses para Sistema 1: ", prob_sistema1_falla, "\n")
## Probabilidad de falla en menos de 2 meses para Sistema 1:  0.098
cat("Probabilidad de falla en menos de 2 meses para Sistema 2: ", prob_sistema2_falla, "\n")
## Probabilidad de falla en menos de 2 meses para Sistema 2:  0
cat("Probabilidad de falla en menos de 2 meses para Sistema 3: ", prob_sistema3_falla, "\n")
## Probabilidad de falla en menos de 2 meses para Sistema 3:  0.175

D. Percentil 20 del tiempo de vida del Sistema 1

Calculamos el percentil 20 del primer sistema.

# Estimación del percentil 20
P20_sistema1 <- quantile(tiempo_sistema1, 0.20)
cat("Percentil 20 del tiempo de vida del Sistema 1: ", P20_sistema1, "\n")
## Percentil 20 del tiempo de vida del Sistema 1:  2.372783

E. Gráfica de probabilidad normal

Generamos una gráfica de probabilidad normal para verificar si los tiempos de vida de los sistemas siguen una distribución normal.

# Gráfica de probabilidad normal para los tres sistemas
par(mfrow=c(1,3))
qqnorm(tiempo_sistema1, main="QQ Plot Sistema 1")
qqline(tiempo_sistema1, col="blue")

qqnorm(tiempo_sistema2, main="QQ Plot Sistema 2")
qqline(tiempo_sistema2, col="blue")

qqnorm(tiempo_sistema3, main="QQ Plot Sistema 3")
qqline(tiempo_sistema3, col="blue")

F. Histograma de los tiempos de vida

Construimos un histograma para analizar la simetría de los tiempos de vida.

# Histogramas para los tiempos de vida
par(mfrow=c(1,3))
hist(tiempo_sistema1, main="Histograma Sistema 1", xlab="Tiempo de Vida", col="lightblue", breaks=20)
hist(tiempo_sistema2, main="Histograma Sistema 2", xlab="Tiempo de Vida", col="lightgreen", breaks=20)
hist(tiempo_sistema3, main="Histograma Sistema 3", xlab="Tiempo de Vida", col="lightcoral", breaks=20)

Problema 4

A. Generación de coordenadas X

Generamos 1000 puntos aleatorios 𝑋 1 , 𝑋 2 , … , 𝑋 1000 X 1 ​ ,X 2 ​ ,…,X 1000 ​ siguiendo una distribución uniforme entre 0 y 1.

set.seed(123)  # Para reproducibilidad

# Generar 1000 coordenadas x en [0, 1]
n <- 1000
x <- runif(n, min = 0, max = 1)

# Mostrar las primeras coordenadas
cat("Primeras 10 coordenadas X generadas:\n")
## Primeras 10 coordenadas X generadas:
print(head(x, 10))
##  [1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673 0.0455565 0.5281055
##  [8] 0.8924190 0.5514350 0.4566147

B. Generación de coordenadas Y

Generamos 1000 puntos aleatorios 𝑌 1 , 𝑌 2 , … , 𝑌 1000 Y 1 ​ ,Y 2 ​ ,…,Y 1000 ​ siguiendo una distribución uniforme entre 0 y 1.

# Generar 1000 coordenadas y en [0, 1]
y <- runif(n, min = 0, max = 1)

# Mostrar las primeras coordenadas
cat("Primeras 10 coordenadas Y generadas:\n")
## Primeras 10 coordenadas Y generadas:
print(head(y, 10))
##  [1] 0.27362273 0.59386693 0.16018481 0.85343024 0.84773916 0.47788681
##  [7] 0.77369212 0.29540008 0.06562811 0.44053312

C. Cálculo de la distancia desde el centro del círculo

Para cada par de puntos ( 𝑋 𝑖 , 𝑌 𝑖 ) (X i ​ ,Y i ​ ), calculamos la distancia desde el centro del círculo en ( 0.5 , 0.5 ) (0.5,0.5) y verificamos si están dentro del círculo. Un punto está dentro del círculo si su distancia desde el centro es menor a 0.5.

# Cálculo de la distancia al centro (0.5, 0.5)
distancia_al_centro <- (x - 0.5)^2 + (y - 0.5)^2

# Identificar los puntos dentro del círculo (distancia < 0.25)
dentro_circulo <- distancia_al_centro <= 0.25

# Mostrar los primeros resultados
cat("¿Están los primeros 10 puntos dentro del círculo?\n")
## ¿Están los primeros 10 puntos dentro del círculo?
print(head(dentro_circulo, 10))
##  [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

D. Estimación de Pi

Contamos cuántos puntos están dentro del círculo y usamos esta información para estimar 𝜋.

# Contar cuántos puntos están dentro del círculo
puntos_dentro <- sum(dentro_circulo)

# Estimar Pi como 4 veces la proporción de puntos dentro del círculo
estimacion_pi <- 4 * (puntos_dentro / n)

# Imprimir resultados
cat("Número de puntos dentro del círculo: ", puntos_dentro, "\n")
## Número de puntos dentro del círculo:  800
cat("Estimación de Pi con 1000 puntos: ", estimacion_pi, "\n")
## Estimación de Pi con 1000 puntos:  3.2

Mejorando la estimación con más puntos

Realizamos una simulación con 10000 y 100000 puntos para mejorar la estimación de 𝜋.

# Función para simular y estimar Pi con n puntos
estimar_pi <- function(n) {
  x <- runif(n, min = 0, max = 1)
  y <- runif(n, min = 0, max = 1)
  distancia_al_centro <- (x - 0.5)^2 + (y - 0.5)^2
  dentro_circulo <- distancia_al_centro <= 0.25
  puntos_dentro <- sum(dentro_circulo)
  estimacion_pi <- 4 * (puntos_dentro / n)
  return(estimacion_pi)
}

# Simulaciones con 10000 y 100000 puntos
estimacion_10000 <- estimar_pi(10000)
estimacion_100000 <- estimar_pi(100000)

# Imprimir resultados
cat("Estimación de Pi con 10000 puntos: ", estimacion_10000, "\n")
## Estimación de Pi con 10000 puntos:  3.1528
cat("Estimación de Pi con 100000 puntos: ", estimacion_100000, "\n")
## Estimación de Pi con 100000 puntos:  3.144