<filename>Ark.MetCompA/Aula-py8/aula8.py
# -*- coding: utf-8 -*-
"""eficiencia_acuracia.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1pzERsxA8ysrnRCnsHbe1647lLKOo8fMw

# Variáveis e seus intervalos

Maiores e menores floats em Python:
"""

import sys
sys.float_info

"""Não há limite no valor máximo de um inteiro em Python 3. Um exemplo:

"""

print(2**1000000)

"""

---

Função para calcular o x! (fatorial de um inteiro **x**)"""

def fatorial(x):
  f = 1
  for n in range(1,int(x)+1):
    f*=n
  print(f)

fatorial(200.)

"""**Exercício 1:** Modifique a função fatorial acima para que use variáveis float em vez de inteiros e novamente calcule o fatorial de 200. O que você encontra? Explique. """



"""---
Exemplo: Oscilador harmônico quântico




"""

import math
import time

t_inicio = time.time()

termos = 1000
beta = 1/100
numerador = 0.0
Z = 0.0

for n in range(termos):
    E_n = n + 0.5
    peso = math.exp(-beta*E_n)
    numerador += E_n*peso
    Z += peso

t_fim = time.time()

print("Número de termos: ",termos)
print("Energia média: ",numerador/Z)
print("Tempo de execução: ",t_fim-t_inicio,"s")

"""
---
Exemplo: multiplicação de matrizes
"""

import numpy as np

N = 10
A = np.random.rand(N,N)
B = np.random.rand(N,N)
C=np.zeros([N,N],float)

for i in range(N):
  for j in range(N):
    for k in range(N):
      C[i,j] += A[i,k]*B[k,j]

print(C)

"""Quantas operações matemáticas estão envolvidas no cálculo acima?


---
"""
<filename>Ark.MetCompA/Aula-py8/aula8.py
# -*- coding: utf-8 -*-
"""eficiencia_acuracia.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1pzERsxA8ysrnRCnsHbe1647lLKOo8fMw

# Variáveis e seus intervalos

Maiores e menores floats em Python:
"""

import sys
sys.float_info

"""Não há limite no valor máximo de um inteiro em Python 3. Um exemplo:

"""

print(2**1000000)

"""

---

Função para calcular o x! (fatorial de um inteiro **x**)"""

def fatorial(x):
  f = 1
  for n in range(1,int(x)+1):
    f*=n
  print(f)

fatorial(200.)

"""**Exercício 1:** Modifique a função fatorial acima para que use variáveis float em vez de inteiros e novamente calcule o fatorial de 200. O que você encontra? Explique. """



"""---
Exemplo: Oscilador harmônico quântico




"""

import math
import time

t_inicio = time.time()

termos = 1000
beta = 1/100
numerador = 0.0
Z = 0.0

for n in range(termos):
    E_n = n + 0.5
    peso = math.exp(-beta*E_n)
    numerador += E_n*peso
    Z += peso

t_fim = time.time()

print("Número de termos: ",termos)
print("Energia média: ",numerador/Z)
print("Tempo de execução: ",t_fim-t_inicio,"s")

"""
---
Exemplo: multiplicação de matrizes
"""

import numpy as np

N = 10
A = np.random.rand(N,N)
B = np.random.rand(N,N)
C=np.zeros([N,N],float)

for i in range(N):
  for j in range(N):
    for k in range(N):
      C[i,j] += A[i,k]*B[k,j]

print(C)

"""Quantas operações matemáticas estão envolvidas no cálculo acima?


---
"""
# -*- coding: utf-8 -*- eficiencia_acuracia.ipynb  Automatically generated by Colaboratory.  Original file is located at     https://colab.research.google.com/drive/1pzERsxA8ysrnRCnsHbe1647lLKOo8fMw  # Variáveis e seus intervalos  Maiores e menores floats em Python: Não há limite no valor máximo de um inteiro em Python 3. Um exemplo: ---  Função para calcular o x! (fatorial de um inteiro **x**) **Exercício 1:** Modifique a função fatorial acima para que use variáveis float em vez de inteiros e novamente calcule o fatorial de 200. O que você encontra? Explique. --- Exemplo: Oscilador harmônico quântico --- Exemplo: multiplicação de matrizes Quantas operações matemáticas estão envolvidas no cálculo acima?   ---