Skip to content
Snippets Groups Projects
Commit 5e0f2c71 authored by Nicolas Mantilla Molina's avatar Nicolas Mantilla Molina
Browse files

Add Quiz 3 notebook

parent 529b8626
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Quiz 3
Integrantes:
- Nicolas Mantilla Molina - 2210707
- Brayan Amorocho Lizcano - 2210719
%% Cell type:markdown id: tags:
## Desarrollo
%% Cell type:markdown id: tags:
Primero importamos las librerias necesarias para el desarrollo del quiz
%% Cell type:code id: tags:
``` python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from tabulate import tabulate
```
%% Cell type:markdown id: tags:
Dos subsistemas que comparten energía, cada una con 2 partículas y 6 niveles de energía. Cada partícula puede ocupar un nivel de energía a la vez. El objetivo es encontrar el par de energías de los subsistemas A y B con más número de estados accesibles cuya energía total sea 10.
Vamos a ver todos los estados posibles para el subsistema A y B y luego vamos a ver cuales son los pares de estados que suman 10. Posteriormente se contará el número de estados accesibles de la energía total como una función de la energía de alguno de los subsistemas, esto debido a que hay una ligadura entre las energías de los subsistemas A y B (EA+EB=ET).
%% Cell type:code id: tags:
``` python
ET = 10 #Energia total
NumPartA = 2 #Numero de particulas A
NumPartB = 2 #Numero de particulas B
EnerPosible = 6 #Numero de energias posibles
#Estados posibles de las particulas A y B con cualquier energía
EstadosA = [[i+1, j+1] for i in range(EnerPosible) for j in range(EnerPosible)]
EstadosB = [[i+1, j+1] for i in range(EnerPosible) for j in range(EnerPosible)]
#Producto cartesiano de los estados posibles de las particulas A y B en un dataframe
TodosEstados = pd.DataFrame([(a, b) for a in EstadosA for b in EstadosB], columns=['A', 'B'])
#Energía del susbistema A, B y total
TodosEstados['EA'] = TodosEstados['A'].apply(lambda x: sum(x))
TodosEstados['EB'] = TodosEstados['B'].apply(lambda x: sum(x))
TodosEstados['ET'] = TodosEstados['EA'] + TodosEstados['EB']
#Ahora filtramos por ET
EstadosPermitidos = TodosEstados[TodosEstados['ET'] == ET]
#Ahora, para cada energía de A y B, contamos los estados accesibles y, además, los estados accesibles para la energía total siendo el producto de las anteriores
def NumeroEstadosSub(DF, Esub, Sistema = 'A'):
EstadosEsub = DF[DF['E'+Sistema] == Esub]
Cuenta = 0
EstadosUnicos = []
for i in EstadosEsub[Sistema]:
if i not in EstadosUnicos:
EstadosUnicos.append(i)
Cuenta += 1
return Cuenta
EstadosAccesibles = pd.DataFrame({'EA': EstadosPermitidos['EA'].unique(), 'EB': EstadosPermitidos['EB'].unique()})
EstadosAccesibles['OmegaA'] = [NumeroEstadosSub(EstadosPermitidos, i, 'A') for i in EstadosAccesibles['EA']]
EstadosAccesibles['OmegaB'] = [NumeroEstadosSub(EstadosPermitidos, i, 'B') for i in EstadosAccesibles['EB']]
EstadosAccesibles['OmegaT'] = EstadosAccesibles['OmegaA'] * EstadosAccesibles['OmegaB']
EstadosAccesibles
```
%% Output
EA EB OmegaA OmegaB OmegaT
0 2 8 1 5 5
1 3 7 2 6 12
2 4 6 3 5 15
3 5 5 4 4 16
4 6 4 5 3 15
5 7 3 6 2 12
6 8 2 5 1 5
%% Cell type:markdown id: tags:
Ahora con el número de estados accesibles para cada energía EA, podemos verificar el comportamiento del número de estados accesibles $\Omega_T(E_A,E_B) = \Omega_T(E_A)$:
%% Cell type:code id: tags:
``` python
plt.figure(figsize=(10, 6))
plt.plot(EstadosAccesibles['EA'], EstadosAccesibles['OmegaT'], 'o-', label='$\Omega_T(EA)$', color='purple')
# plt.plot(EstadosAccesibles['EB'], EstadosAccesibles['OmegaT'], 'o-', label='$\Omega_T(EB)$', color='green')
plt.xlabel('$E_A$', fontsize=15)
plt.ylabel('$\Omega_T$', fontsize=15)
plt.title('Número de estados accesibles total $\Omega_T$ para cada $E_A$', fontsize=17)
plt.grid()
```
%% Output
%% Cell type:markdown id: tags:
Tablas para $\LaTeX$:
%% Cell type:code id: tags:
``` python
print(tabulate(EstadosPermitidos, headers='keys', tablefmt='latex'))
```
%% Output
\begin{tabular}{rllrrr}
\hline
& A & B & EA & EB & ET \\
\hline
11 & [1, 1] & [2, 6] & 2 & 8 & 10 \\
16 & [1, 1] & [3, 5] & 2 & 8 & 10 \\
21 & [1, 1] & [4, 4] & 2 & 8 & 10 \\
26 & [1, 1] & [5, 3] & 2 & 8 & 10 \\
31 & [1, 1] & [6, 2] & 2 & 8 & 10 \\
41 & [1, 2] & [1, 6] & 3 & 7 & 10 \\
46 & [1, 2] & [2, 5] & 3 & 7 & 10 \\
51 & [1, 2] & [3, 4] & 3 & 7 & 10 \\
56 & [1, 2] & [4, 3] & 3 & 7 & 10 \\
61 & [1, 2] & [5, 2] & 3 & 7 & 10 \\
66 & [1, 2] & [6, 1] & 3 & 7 & 10 \\
76 & [1, 3] & [1, 5] & 4 & 6 & 10 \\
81 & [1, 3] & [2, 4] & 4 & 6 & 10 \\
86 & [1, 3] & [3, 3] & 4 & 6 & 10 \\
91 & [1, 3] & [4, 2] & 4 & 6 & 10 \\
96 & [1, 3] & [5, 1] & 4 & 6 & 10 \\
111 & [1, 4] & [1, 4] & 5 & 5 & 10 \\
116 & [1, 4] & [2, 3] & 5 & 5 & 10 \\
121 & [1, 4] & [3, 2] & 5 & 5 & 10 \\
126 & [1, 4] & [4, 1] & 5 & 5 & 10 \\
146 & [1, 5] & [1, 3] & 6 & 4 & 10 \\
151 & [1, 5] & [2, 2] & 6 & 4 & 10 \\
156 & [1, 5] & [3, 1] & 6 & 4 & 10 \\
181 & [1, 6] & [1, 2] & 7 & 3 & 10 \\
186 & [1, 6] & [2, 1] & 7 & 3 & 10 \\
221 & [2, 1] & [1, 6] & 3 & 7 & 10 \\
226 & [2, 1] & [2, 5] & 3 & 7 & 10 \\
231 & [2, 1] & [3, 4] & 3 & 7 & 10 \\
236 & [2, 1] & [4, 3] & 3 & 7 & 10 \\
241 & [2, 1] & [5, 2] & 3 & 7 & 10 \\
246 & [2, 1] & [6, 1] & 3 & 7 & 10 \\
256 & [2, 2] & [1, 5] & 4 & 6 & 10 \\
261 & [2, 2] & [2, 4] & 4 & 6 & 10 \\
266 & [2, 2] & [3, 3] & 4 & 6 & 10 \\
271 & [2, 2] & [4, 2] & 4 & 6 & 10 \\
276 & [2, 2] & [5, 1] & 4 & 6 & 10 \\
291 & [2, 3] & [1, 4] & 5 & 5 & 10 \\
296 & [2, 3] & [2, 3] & 5 & 5 & 10 \\
301 & [2, 3] & [3, 2] & 5 & 5 & 10 \\
306 & [2, 3] & [4, 1] & 5 & 5 & 10 \\
326 & [2, 4] & [1, 3] & 6 & 4 & 10 \\
331 & [2, 4] & [2, 2] & 6 & 4 & 10 \\
336 & [2, 4] & [3, 1] & 6 & 4 & 10 \\
361 & [2, 5] & [1, 2] & 7 & 3 & 10 \\
366 & [2, 5] & [2, 1] & 7 & 3 & 10 \\
396 & [2, 6] & [1, 1] & 8 & 2 & 10 \\
436 & [3, 1] & [1, 5] & 4 & 6 & 10 \\
441 & [3, 1] & [2, 4] & 4 & 6 & 10 \\
446 & [3, 1] & [3, 3] & 4 & 6 & 10 \\
451 & [3, 1] & [4, 2] & 4 & 6 & 10 \\
456 & [3, 1] & [5, 1] & 4 & 6 & 10 \\
471 & [3, 2] & [1, 4] & 5 & 5 & 10 \\
476 & [3, 2] & [2, 3] & 5 & 5 & 10 \\
481 & [3, 2] & [3, 2] & 5 & 5 & 10 \\
486 & [3, 2] & [4, 1] & 5 & 5 & 10 \\
506 & [3, 3] & [1, 3] & 6 & 4 & 10 \\
511 & [3, 3] & [2, 2] & 6 & 4 & 10 \\
516 & [3, 3] & [3, 1] & 6 & 4 & 10 \\
541 & [3, 4] & [1, 2] & 7 & 3 & 10 \\
546 & [3, 4] & [2, 1] & 7 & 3 & 10 \\
576 & [3, 5] & [1, 1] & 8 & 2 & 10 \\
651 & [4, 1] & [1, 4] & 5 & 5 & 10 \\
656 & [4, 1] & [2, 3] & 5 & 5 & 10 \\
661 & [4, 1] & [3, 2] & 5 & 5 & 10 \\
666 & [4, 1] & [4, 1] & 5 & 5 & 10 \\
686 & [4, 2] & [1, 3] & 6 & 4 & 10 \\
691 & [4, 2] & [2, 2] & 6 & 4 & 10 \\
696 & [4, 2] & [3, 1] & 6 & 4 & 10 \\
721 & [4, 3] & [1, 2] & 7 & 3 & 10 \\
726 & [4, 3] & [2, 1] & 7 & 3 & 10 \\
756 & [4, 4] & [1, 1] & 8 & 2 & 10 \\
866 & [5, 1] & [1, 3] & 6 & 4 & 10 \\
871 & [5, 1] & [2, 2] & 6 & 4 & 10 \\
876 & [5, 1] & [3, 1] & 6 & 4 & 10 \\
901 & [5, 2] & [1, 2] & 7 & 3 & 10 \\
906 & [5, 2] & [2, 1] & 7 & 3 & 10 \\
936 & [5, 3] & [1, 1] & 8 & 2 & 10 \\
1081 & [6, 1] & [1, 2] & 7 & 3 & 10 \\
1086 & [6, 1] & [2, 1] & 7 & 3 & 10 \\
1116 & [6, 2] & [1, 1] & 8 & 2 & 10 \\
\hline
\end{tabular}
%% Cell type:code id: tags:
``` python
print(tabulate(EstadosAccesibles, headers='keys', tablefmt='latex'))
```
%% Output
\begin{tabular}{rrrrrr}
\hline
& EA & EB & OmegaA & OmegaB & OmegaT \\
\hline
0 & 2 & 8 & 1 & 5 & 5 \\
1 & 3 & 7 & 2 & 6 & 12 \\
2 & 4 & 6 & 3 & 5 & 15 \\
3 & 5 & 5 & 4 & 4 & 16 \\
4 & 6 & 4 & 5 & 3 & 15 \\
5 & 7 & 3 & 6 & 2 & 12 \\
6 & 8 & 2 & 5 & 1 & 5 \\
\hline
\end{tabular}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment