SEMESTRAL QM215 2025-07-15 Abdiel Araúz 4-831-501

Problema 1

concentraciones <- function(x) {
  H2 <- 0.5 - x
  I2 <- 0.5 - x
  HI <- 2 * x
  return(data.frame(x, H2, I2, HI))
}


Kc <- 50.2
x_vals <- seq(0, 0.5, by = 0.001)

resultados <- data.frame(
  x = x_vals,
  Q = (2 * x_vals)^2 / ((0.5 - x_vals) * (0.5 - x_vals))
)

resultados$error <- (resultados$Q - Kc)^2


min_x <- resultados$x[which.min(resultados$error)]

print(paste("El valor de x para el equilibrio es:", round(min_x, 4)))
## [1] "El valor de x para el equilibrio es: 0.39"
plot(resultados$x, resultados$Q, type = "l", col = "blue",
     xlab = "x", ylab = "Q", main = "Q en función de x")
abline(h = Kc, col = "red", lty = 2)

Problema 2

url <- "https://raw.githubusercontent.com/TripleAg7/QM215/refs/heads/main/Datos%20(1).csv"
datos <- read.csv(url)

head(datos)
##      T_K     Cp       S G_H_over_T  H_HTr delta_f_H delta_f_G  log_Kf
## 1 100.00 29.208 179.009    243.568 -6.456  -393.208  -393.683 205.639
## 2 200.00 32.359 199.975    217.046 -3.414  -393.404  -394.085 102.924
## 3 298.15 37.129 213.795    213.795  0.000  -393.522  -394.389  69.095
## 4 300.00 37.221 214.025    213.795  0.069  -393.523  -394.394  68.670
## 5 400.00 41.325 225.314    215.307  4.003  -393.583  -394.675  51.539
## 6 500.00 44.627 234.901    218.290  8.305  -393.666  -394.939  41.259
plot(datos$T_K, datos$Cp,
     xlab = "Temperatura (K)",
     ylab = "Cp (J/mol·K)",
     main = "Cp en función de la Temperatura",
     pch = 19, col = "gray")


modelo_suavizado <- loess(Cp ~ T_K, data = datos)


tendencia <- predict(modelo_suavizado)


lines(datos$T_K, tendencia, col = "skyblue", lwd = 2)

Problema 3

concentracion=c(0.00, 0.02, 0.04, 0.06, 0.08, 0.10)
absorbancia=c(0.00, 0.18, 0.38, 0.59, 0.81, 1.01)

df=data.frame(concentracion, absorbancia)

plot(df$concentracion, df$absorbancia,
     main = "Absorbancia vs Concentracion",
     xlab = "Concentracion (mol/L)",
     ylab = "Absorbancia",
     col = "red", pch = 16)
modelo <- lm(absorbancia ~ concentracion)
abline(modelo, col = "blue", lwd = 2)

a <- coef(modelo)[1]
b <- coef(modelo)[2]

coeficientes <- coef(modelo)
cat("Ecuación ajustada: Absorbancia =", round(coeficientes[1], 4), "+", round(coeficientes[2], 4), "* Concentración\n")
## Ecuación ajustada: Absorbancia = -0.0157 + 10.2143 * Concentración
absorbancia_dada <- 0.75
concentracion_estimada <- (absorbancia_dada - a) / b
cat("Concentracion para Absorbancia = 0.75:", round(concentracion_estimada, 4), "mol/L\n")
## Concentracion para Absorbancia = 0.75: 0.075 mol/L
resumen <- summary(modelo)
cat("Coeficiente de determinación R^2:", round(resumen$r.squared, 4), "\n")
## Coeficiente de determinación R^2: 0.9991
abline(h = 0.75, col = "gray", lty = 2)
abline(v = concentracion_estimada, col = "pink", lty = 2)

Problema 4

X0 <- 0.100
k <- 0.25
tiempo <- seq(0, 20, by = 1)


X_teorico <- X0 * exp(-k * tiempo)


set.seed(123)
ruido <- rnorm(length(tiempo), mean = 0, sd = 0.005)
X_experimental <- X_teorico + ruido
X_experimental <- pmax(X_experimental, 0.0001)  


datos <- data.frame(tiempo, X_teorico, X_experimental)


datos_filtrados <- datos[datos$X_experimental > 0, ]
ln_X <- log(datos_filtrados$X_experimental)


modelo <- lm(ln_X ~ datos_filtrados$tiempo)
summary(modelo)
## 
## Call:
## lm(formula = ln_X ~ datos_filtrados$tiempo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.09206 -0.34923 -0.08658  0.52338  2.07954 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -1.98178    0.47979  -4.131 0.000569 ***
## datos_filtrados$tiempo -0.30420    0.04104  -7.412 5.11e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.139 on 19 degrees of freedom
## Multiple R-squared:  0.743,  Adjusted R-squared:  0.7295 
## F-statistic: 54.94 on 1 and 19 DF,  p-value: 5.108e-07
k_estimado <- -coef(modelo)[2]
cat("k estimado =", round(k_estimado, 4), "min⁻¹\n")
## k estimado = 0.3042 min⁻¹
plot(datos$tiempo, datos$X_experimental,
     type = "b", col = "blue", pch = 16,
     xlab = "Tiempo (min)", ylab = "[X] (mol/L)",
     main = "Descomposición de X con error experimental")

lines(datos$tiempo, datos$X_teorico, col = "red", lty = 2, lwd = 2)
legend("topright", legend = c("Experimental", "Teórico"),
       col = c("blue", "red"), lty = c(1, 2), pch = c(16, NA))

Problema 5

url <- "https://raw.githubusercontent.com/TripleAg7/QM215/refs/heads/main/pH%20(1).csv"
datos <- read.csv(url)

head(datos)
##   vol_NaOH_mL   pH
## 1           0 2.88
## 2           1 3.14
## 3           2 3.41
## 4           3 3.65
## 5           4 3.89
## 6           5 4.22
plot(datos$vol_NaOH_mL, datos$pH, type = "b", pch = 16,
     col = "blue", xlab = "Volumen de NaOH agregado (mL)",
     ylab = "pH", main = "Curva de titulación ácido acético con NaOH")


diff(datos$pH)
##  [1] 0.26 0.27 0.24 0.24 0.33 0.33 0.34 0.42 0.46 0.51 0.45 0.69 0.68 0.52   NA
which.max(diff(datos$pH))
## [1] 12
abline(v = 11.5, col = "red", lty = 2)
text(11.5, 9, "Equivalencia", col = "red", pos = 4)