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)