Química
1 Lei dos Gases Ideais (EM13CNT101, EM13CNT204, EM13CNT205, EM13CNT207, EM13CNT303)
# Dados:
= 8.314 # J/(mol*K), constante geral dos gases ideias
R = seq(0,22.4, length.out=50) # vetor de "Volume" (em litros), com 50 pontos
V = 298 # K, temperatura absoluta
T
# Equação
# pV = RT; p = RT/V
= R*T/V
p
library(plotly)
library(magrittr) # biblioteca para o operador pipe "%>%"
plot_ly(x = V, y = ~R*T/V, type = 'scatter', mode='lines') %>%
layout(
title = "Transformação Isotérmica de um Gás",
xaxis = list(title = "Volume V, L", range=c(-1,24)),
yaxis = list(title = "Pressão p, Pascal")
)
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
2 Curvas de consumo de reagente e formação de produto (EM13CNT301, EM13MAT304, EM13CNT306)
library(ggplot2)
library(gganimate)
library(gifski)
# Dados simulados de tempo, reagente e produto
<- seq(0, 10, length.out = 100) # 0 a 10 segundos
tempo <- 100 * exp(-0.3 * tempo) # Decaimento exponencial
reagente <- 100 * (1 - exp(-0.3 * tempo)) # Formação de produto
produto
# Criando um dataframe para o gráfico
<- data.frame(Tempo = tempo, Reagente = reagente, Produto = produto)
dados
# Gráfico animado de consumo de reagente e formação de produto
<- ggplot(dados, aes(x = Tempo)) +
p geom_line(aes(y = Reagente, color = "Reagente"), linewidth = 1.2) +
geom_line(aes(y = Produto, color = "Produto"), linewidth = 1.2) +
scale_color_manual(values = c("Reagente" = "blue", "Produto" = "red")) +
labs(title = "Consumo de Reagente e Formação de Produto ao Longo do Tempo",
x = "Tempo (s)", y = "Quantidade (mol)", color = "Substância") +
transition_reveal(Tempo) +
theme_minimal()
# Exibindo o gráfico animado
animate(p, renderer = gifski_renderer())
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
3 Equilíbrio de dissociação de ácidos e bases fracas (EM13CNT303, EM13MAT305, EM13CNT304)
library(plotly)
# Parâmetro inicial de Ka para ácido fraco e dados para pH e concentração
<- 1e-5 # Constante de acidez padrão
Ka
# Valores de pH e concentrações
<- seq(0, 14, 0.1)
pH_values <- 10^(-pH_values) # Concentração H+ para cada pH
conc_H <- 1e-14 / conc_H # Concentração OH- com base no produto iônico da água
conc_OH <- conc_H / (Ka + conc_H) # Concentração HA para ácido fraco
conc_HA <- Ka * conc_HA # Concentração A-
conc_A
# Data frame combinado
<- data.frame(pH = pH_values, conc_H = conc_H, conc_OH = conc_OH, conc_HA = conc_HA, conc_A = conc_A)
dados_acidez
# Gráfico combinado interativo
plot_ly(dados_acidez) %>%
add_lines(x = ~pH, y = ~conc_H, name = "Concentração H+", line = list(color = "blue")) %>%
add_lines(x = ~pH, y = ~conc_OH, name = "Concentração OH-", line = list(color = "red")) %>%
add_lines(x = ~pH, y = ~conc_HA, name = "Concentração HA (ácido)", line = list(color = "purple")) %>%
add_lines(x = ~pH, y = ~conc_A, name = "Concentração A- (base conjugada)", line = list(color = "green")) %>%
layout(
title = "Curvas de Acidez, Basicidade e Dissociação de Ácido",
xaxis = list(title = "pH"),
yaxis = list(title = "Concentração (mol/L)", type = "log"),
sliders = list(
list(
active = 5,
currentvalue = list(prefix = "Ka = "),
steps = lapply(seq(1e-7, 1e-3, length.out = 10), function(k) {
list(label = format(k, scientific = TRUE), method = "update",
args = list(list(
y = list(
10^(-pH_values), # Atualizar H+
1e-14 / 10^(-pH_values), # Atualizar OH-
10^(-pH_values) / (k + 10^(-pH_values)), # Atualizar HA
* (10^(-pH_values) / (k + 10^(-pH_values))) # Atualizar A-
k
)
)))
})
)
) )
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
4 Decaimento radioativo e meia-vida (EM13CNT306, EM13MAT305, EM13CNT301)
library(plotly)
# Parâmetros iniciais
<- 100 # Quantidade inicial
N0 <- seq(0, 50, by = 0.5) # Intervalo de tempo
tempo
# Função de decaimento
<- function(t, meia_vida) {
decaimento_radioativo * 0.5^(t / meia_vida)
N0
}
# Gráfico com plotly
<- plot_ly(x = ~tempo, y = ~decaimento_radioativo(tempo, 10), type = 'scatter', mode = 'lines', name = "Decaimento")
fig
# Adicionando o slider
<- fig %>% layout(
fig title = "Decaimento Radioativo",
xaxis = list(title = "Tempo"),
yaxis = list(title = "Quantidade Restante"),
sliders = list(list(
currentvalue = list(prefix = "Meia-vida = "),
steps = lapply(seq(5, 30, by = 5), function(meia_vida) {
list(label = as.character(meia_vida), method = "update",
args = list(list(y = list(decaimento_radioativo(tempo, meia_vida)))))
})
))
)
fig
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
5 Decomposição de peróxido de hidrogênio (EM13CNT301, EM13MAT305, EM13CNT303)
library(plotly)
# Parâmetros iniciais
<- 1 # Concentração inicial de H2O2
H2O2_0 <- seq(0, 10, 0.1) # Intervalo de tempo
tempo
# Função de decomposição
<- function(t, k) H2O2_0 * exp(-k * t)
decomposicao
# Gráfico com slider
<- plot_ly(x = ~tempo, y = ~decomposicao(tempo, 0.3), type = 'scatter', mode = 'lines') %>%
fig layout(
title = "Decomposição de H2O2",
xaxis = list(title = "Tempo (horas)"),
yaxis = list(title = "Concentração de H2O2 (mol/L)"),
sliders = list(list(
currentvalue = list(prefix = "k = "),
steps = lapply(seq(0.1, 1, 0.1), function(k) {
list(label = k, method = "update", args = list(list(y = list(decomposicao(tempo, k)))))
})
))
)
fig
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
6 Lei de Proust e estequiometria de reação em representação 3D (EM13CNT101, EM13CNT202, EM13CNT201)
library(plotly)
# Quantidades iniciais de reagentes
<- 0:5 # Quantidade de H2 em mol
H2_mol <- 0:5 # Quantidade de O2 em mol
O2_mol
# Função para calcular H2O formado com base na estequiometria 2:1:2
<- function(H2, O2) {
formar_H2O min(2 * H2, O2) / 2
}
# Dados para o gráfico
<- expand.grid(H2 = H2_mol, O2 = O2_mol)
dados $H2O <- mapply(formar_H2O, dados$H2, dados$O2)
dados
# Gráfico interativo com sliders para H2 e O2
<- plot_ly(dados, x = ~H2, y = ~O2, z = ~H2O, type = 'mesh3d', mode = 'markers') %>%
fig layout(
title = "Estequiometria de Reação (Lei de Proust)",
scene = list(
xaxis = list(title = "Quantidade de H2 (mol)"),
yaxis = list(title = "Quantidade de O2 (mol)"),
zaxis = list(title = "Quantidade de H2O formado (mol)")
)
)
fig
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código:
7 Concentração de reagentes e constante de equilíbrio de dissociação (EM13CNT201, EM13CNT202, EM13CNT204)
# Carregar pacotes necessários
library(ggplot2)
library(gganimate)
# Definir os parâmetros iniciais
<- 1 # Concentração de A
A <- 1 # Concentração de B
B
# Função para calcular as concentrações de produtos com base na constante K
<- function(K) sqrt(K * A * B)
calc_produtos
# Criar o conjunto de dados para diferentes valores de K
<- data.frame(
dados K = seq(0.5, 3, by = 0.1)
)$C <- calc_produtos(dados$K)
dados$D <- dados$C
dados
# Transformar dados para visualização de barras
<- data.frame(
dados_long K = rep(dados$K, each = 4),
Substancia = rep(c("A", "B", "C", "D"), times = length(dados$K)),
Concentracao = c(rep(A, length(dados$K)), rep(B, length(dados$K)), dados$C, dados$D)
)
# Criar gráfico animado
<- ggplot(dados_long, aes(x = Substancia, y = Concentracao, fill = Substancia)) +
p geom_bar(stat = "identity", position = "dodge") +
labs(title = 'Equilíbrio Químico - Constante de Equilíbrio (K): {closest_state}',
x = 'Substâncias', y = 'Concentração (mol/L)') +
transition_states(K, transition_length = 2, state_length = 1) +
ease_aes('linear')
# Mostrar o gráfico
p
Sugestões:
Experimente modificar o gráfico, usando/substituindo alternativamente os comandos abaixo no trecho de código: