#problema 1
concentraciones <- function(x) {
H2 <- 0.5 - x
I2 <- 0.5 - x
HI <- 2 * x
return(list(H2 = H2, I2 = I2, HI = HI))
}
Kc <- 50.2
f_equilibrio <- function(x) {
HI <- 2 * x
H2 <- 0.5 - x
I2 <- 0.5 - x
Q <- (HI^2) / (H2 * I2)
return(Q - Kc)
}
concentraciones <- function(x) {
H2 <- 0.5 - x
I2 <- 0.5 - x
HI <- 2 * x
return(list(H2 = H2, I2 = I2, HI = HI))
}
Kc <- 50.2
f_equilibrio <- function(x) {
HI <- 2 * x
H2 <- 0.5 - x
I2 <- 0.5 - x
Q <- (HI^2) / (H2 * I2)
return(Q - Kc)
}
sol <- uniroot(f_equilibrio, c(0, 0.5))
x_equilibrio <- sol$root
conc_finales <- concentraciones(x_equilibrio)
print(conc_finales)
## $H2
## [1] 0.110071
##
## $I2
## [1] 0.110071
##
## $HI
## [1] 0.779858
#problema 2
url <-"https://raw.githubusercontent.com/Ruben2104/QM215/refs/heads/main/JanafCO2.csv"
datos <- read.csv(url)
head(datos)
## T.......Cp....S....ds...dH..delta_f.....G.
## 1 100; 29.208;179.009;243.568;-6.456;-393.208;-393.683;
## 2 200; 32.359;199.975;217.046;-3.414;-393.404;-394.085;
## 3
## 4 298.15;37.129;213.795;213.795; 0.; -393.522;-394.389;
## 5
## 6 300; 37.221;214.025;213.795; 0.069;-393.523;-394.394;
# grafica Cp vs Temperatura
datos <- data.frame(
T = c(100,200,298,300,400,500,600,700,800,900,1000),
Cp = c(29.208,32.359,37.129,37.221,41.325,44.627,47.321,49.564,51.434,52.999,54.308)
)
plot(datos$T, datos$Cp,
xlab = "T",
ylab = "Cp",
main = "Cp VS T",
pch = 16,
col = "blue")
modelo <- lm(Cp ~ T, data = datos)
abline(modelo, col ="red", lwd = 2)
summary(modelo)
##
## Call:
## lm(formula = Cp ~ T, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.5075 -1.3791 0.2504 1.3864 1.9864
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.465700 1.086884 26.19 8.33e-10 ***
## T 0.028350 0.001816 15.61 7.98e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.707 on 9 degrees of freedom
## Multiple R-squared: 0.9644, Adjusted R-squared: 0.9604
## F-statistic: 243.6 on 1 and 9 DF, p-value: 7.984e-08
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)
modelo <- lm(absorbancia ~ concentracion)
summary(modelo)
##
## Call:
## lm(formula = absorbancia ~ concentracion)
##
## Residuals:
## 1 2 3 4 5 6
## 0.015714 -0.008571 -0.012857 -0.007143 0.008571 0.004286
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.015714 0.009073 -1.732 0.158
## concentracion 10.214286 0.149830 68.173 2.77e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.01254 on 4 degrees of freedom
## Multiple R-squared: 0.9991, Adjusted R-squared: 0.9989
## F-statistic: 4647 on 1 and 4 DF, p-value: 2.774e-07
plot(concentracion, absorbancia, pch = 16,
xlab = "Concentración (mol/L)", ylab = "Absorbancia")
abline(modelo, col = "red")
nueva_abs <- data.frame(concentracion = 0.75)
concentracion_estimada <- (0.75 - coef(modelo)[1]) / coef(modelo)[2]
cat("Concentración estimada:", concentracion_estimada, "mol/L\n")
## Concentración estimada: 0.07496503 mol/L
set.seed(123)
tiempo <- seq(0, 20, by = 1)
X0 <- 0.100
k_teorico <- 0.25
X_teorico <- X0 * exp(-k_teorico * tiempo)
ruido <- rnorm(length(tiempo), mean = 0, sd = 0.0025)
X_simulado <- X_teorico + ruido
lnX <- log(X_simulado)
## Warning in log(X_simulado): Se han producido NaNs
modelo_cinetica <- lm(lnX ~ tiempo)
k_estimado <- -coef(modelo_cinetica)[2]
plot(tiempo, X_simulado, pch = 16,
xlab = "Tiempo (min)", ylab = "[X] (mol/L)")
lines(tiempo, X_teorico, col = "red")
cat("k teórico:", k_teorico, "\nk estimado:", k_estimado, "\n")
## k teórico: 0.25
## k estimado: 0.2152729
url <-"https://raw.githubusercontent.com/Ruben2104/QM215/refs/heads/main/titulacion_acetico.csv"
datos <- read.csv(url)
head(datos)
## mLNaOH...pH
## 1 0.00 2.88
## 2 1.00 3.14
## 3 2.00 3.41
## 4 3.00 3.65
## 5 4.00 3.89
## 6 5.00 4.22
mL_NaOH <- c(0.00, 1.00, 2.00, 3.00, 4.00, 5.00)
pH <- c(2.88, 3.14, 3.41, 3.65, 3.89, 4.22)
datos <- data.frame(mL_NaOH, pH)
head(datos)
## mL_NaOH 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
delta_pH <- diff(pH) / diff(mL_NaOH)
vol_equiv <- mL_NaOH[which.max(delta_pH)]
cat("Punto de equivalencia estimado en:", vol_equiv, "mL\n")
## Punto de equivalencia estimado en: 4 mL
plot(mL_NaOH, pH, type = "l", col = "green", lwd = 2,
xlab = "Volumen de NaOH agregado (mL)",
ylab = "pH",
main = "Curva de titulación con punto de equivalencia")
abline(v = vol_equiv, col = "red", lty = 2)
points(mL_NaOH, pH, pch = 16, col = "yellow")
legend("bottomright", legend = c("Curva de titulación", "Punto de equivalencia"),
col = c("green", "red"), lty = c(1,2))