Relación IHL–Diámetro Nominal mediante Ajuste de Modelo
Potencial
# CALIBRACIÓN DE IHL vs DIÁMETRO NOMINAL
library(ggplot2)
# 1. Datos experimentales
d1 <- c(1.70, 1.27, 0.635, 0.475)
d2 <- c(1.27, 0.635, 0.475, 0.335)
IHL <- c(59.47, 13.37, 2.20, 1.10)
# 2. Cálculo del diámetro nominal
dN <- ((d1^3 + d2^3)/2)^(1/3)
# 3. Data frame
datos <- data.frame(dN, IHL)
# Mostrar tabla de datos
print(round(datos, 4))
## dN IHL
## 1 1.5155 59.47
## 2 1.0484 13.37
## 3 0.5663 2.20
## 4 0.4168 1.10
# 4. Ajuste del modelo potencial
modelo <- lm(log(IHL) ~ log(dN), data = datos)
K <- exp(coef(modelo)[1])
alpha <- coef(modelo)[2]
R2 <- summary(modelo)$r.squared
# 5. Resultados: ecuación de calibración
cat(sprintf("IHL = %.4f · dN^(%.4f)\n", K, alpha))
## IHL = 14.0618 · dN^(3.0702)
cat(sprintf("R² = %.4f\n\n", R2))
## R² = 0.9901
# 6. Curva ajustada
x <- seq(min(dN)*0.9, max(dN)*1.1, length.out = 300)
y <- K * x^alpha
curva <- data.frame(x, y)
# 7. Texto de la ecuación
texto <- paste0(
"IHL = ", round(K,3),
"·d^", round(alpha,4),
"\nR² = ", round(R2,4)
)
# 8. Gráfico
ggplot(datos, aes(x = dN, y = IHL)) +
geom_point(
colour = "#1F77B4",
size = 4,
shape = 18
) +
geom_line(
data = curva,
aes(x, y),
colour = "#D62728",
linewidth = 1.3
) +
scale_x_log10(
breaks = c(0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6)
) +
scale_y_log10(
breaks = c(1, 2, 5, 10, 20, 40, 60)
) +
annotate(
"label",
x = 0.5,
y = 5,
label = texto,
fill = "white",
colour = "black",
size = 4.5
) +
labs(
title = "IHL vs Diámetro nominal (cm)",
x = "Diámetro nominal (cm)",
y = "IHL (g)"
) +
theme_bw(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.title = element_text(face = "bold"),
panel.grid.major = element_line(colour = "grey80"),
panel.grid.minor = element_line(colour = "grey92")
)

# 7. Cálculo de S²(FSE)
ML <- c(100000000, 6000, 6000, 500, 500)
MS <- c(6000, 6000, 500, 500, 60)
dN_FSE <- c(1.70, 0.20, 0.20, 0.0104, 0.0104)
etapas <- c(
"Muestreo primario y cuarteo",
"Trituración",
"División",
"Pulverización",
"Selección de la muestra analítica"
)
S2_FSE <- 11.493 * dN_FSE^3.0976 * ((1/MS) - (1/ML))
resultado_FSE <- data.frame(
Etapa = etapas,
dN_cm = dN_FSE,
Masa_lote_g = ML,
Masa_muestra_g = MS,
S2_FSE = signif(S2_FSE, 6)
)
print(resultado_FSE)
## Etapa dN_cm Masa_lote_g Masa_muestra_g
## 1 Muestreo primario y cuarteo 1.7000 1e+08 6000
## 2 Trituración 0.2000 6e+03 6000
## 3 División 0.2000 6e+03 500
## 4 Pulverización 0.0104 5e+02 500
## 5 Selección de la muestra analítica 0.0104 5e+02 60
## S2_FSE
## 1 9.91048e-03
## 2 0.00000e+00
## 3 1.44061e-04
## 4 0.00000e+00
## 5 1.21430e-07