Física Computacional - FSC-5705

só um divisor

Prova de Física Computacional,

I semestre de 2013 - REC

Antes de iniciar a prova é necessário que o estudante crie uma pasta denominada prova_I_matricula_do_aluno dentro desta pasta serão feitos cada um dos programas correspondente aos problemas da prova. O nome dos programas serão problema1.py, problema2.py, etc. Ao concluir a prova o estudante tem de criar um arquivo comprimido com tudo, isto é criar um arquivo do tipo .tar.gz. Este arquivo devera ser enviado por email para o endereço evy.fisica@gmail.com e o assunto do email deve ser prova 1 - matricula do aluno. Depois disso deverá chamar ao professor a fim de copiar para um pendrive o mesmo arquivo.

Exercício 01 (3.0 pts)

$\pi$ pode ser aproximado mediante a expressão \[ pi = \sqrt[3]{32\,S} \] onde, $S$, está dado por \[ S = 1 - \dfrac{1}{3^3} + \dfrac{1}{5^3} - \dfrac{1}{7^3} + \ldots \]

O gráfico resultante deve ser salvo em formato png. Coloque nome nos eixos.

Solução

      #/usr/bin/env python
      #-*- coding: utf-8 -*-

      import numpy as np
      import matplotlib.pyplot as plt

      n = 100

      S1  = np.zeros(n, dtype=np.float)

      for i in xrange(n):
        S1[i] = (-1.0)**i / (i*2.0 + 1.0)**3

      pi = (32.0 * np.sum(S1))**(1.0/3.0)
      print 'a aproximação de pi com 100 termos é:',  pi

      #Escolhemos os 25 I termos
      S2   = S1[0:25]
      pi   = np.zeros_like(S2)
      nmax = np.zeros_like(S2)

      for i in xrange(len(S2)):
        for j in xrange(0, i+1):
          pi[i]   = np.sum(S2[0:j])
          nmax[i] = i+1

      plt.plot(nmax, pi, linestyle='-', color='black',
              marker="o")
      plt.show()
      
[usuario@pclabfis: ]# python exercicio01.py
a aproximação de pi com 100 termos é: 3.14159258605
campo da carga

Exercício 02 (3.0 pts)

Segundo o modelo de Bohr a emissão e/ou absorção de um fóton (luz) com comprimento de onda $\lambda$ por um átomo de hidrogênio pode ser modelada pela equação \[ \frac{1}{\lambda} = \pm\dfrac{m_eq_e^4}{8c\epsilon_0^2h^3} \left( \dfrac{1}{n_f^2} - \dfrac{1}{n_i^2} \right) \label{bohr} \] onde $h=6.62\times 10^{-34} J\,s$ é a constante de Planck, $m_e = 9.109\times 10^{-31} kg$ é a massa do elétron, $\epsilon_0 = 8.854\times 10^{-12} C^2/N\,m^2$ é a permissividade elétrica no vácuo, $q_e=1.6\times 10^{-19}C$ é a carga do elétron, $c=3.0\times 10^8 m/s$ é a velocidade da luz, $n_i$ é a orbita onde o elétron está inicialmente e $n_f$ é a orbita para o qual o elétron será movido após a absorção (sinal negativo) ou emissão do fóton(sinal positivo).

Em caso de absorção um o fóton de de comprimento de onda $\lambda$ é absorvido e o elétron passa de uma orbita interna para uma orbita externa. Em caso de emissão um fóton é emitido quando o elétron se move desde um orbita externa para outra mais interna.

emissão absorção

Utilizando a equação $\ref{bohr}$, crie um programa que pergunte ao usuário se o fenômeno é uma emissão ou absorção e conforme a resposta deve perguntar $n_i$ e $n_f$, devolvendo $\lambda$ para o caso da emissão ou perguntar $n_i$ e $\lambda$, devolvendo $n_f$ para o caso da absorção.

Solução

Ainda que seja obrigatório fazer o teste utilizado para verificar que o fóton adsorvido tem energia igual à diferencia entre os estados inicial e final, não será levado em consideração já que não foi explicitado no problema (e vocês ainda não estudaram estrutura!!!), o resto tudo será avaliado:

      #/usr/bin/env python
      #-*- coding: utf-8 -*-

      import numpy as np
      import matplotlib.pyplot as plt
      import sys

      h = 6.6e-34
      m = 9.109e-31
      eo = 8.854e-12
      q  = 1.6e-19
      c  = 3.0e8

      const = m*q**4/(8.0*c*eo**2*h**3)

      emissao = input('digite: \n1 - para emissão e\n2 - para absorção\n')

      ni = input('\nqual é o estado inicial do elétron: ')

      if (emissao == 1):

        nf = input('para qual estado o elétron vai: ')
        
        if (ni > nf):
          l = 1.0 / (const * (1.0 / nf**2 - 1.0 / ni**2))
          print 'o comprimento de onda do fóton emitido é:', l
        else:
          print 'o estado final deve ser menor que o inicial'
          sys.exit()
      else:
        
        l = input('qual é o comprimento de onda do fóton absorvido: ')
        
        temp = 1.0 / ni**2 - 1.0 / (l*const)
        if (temp <= 0):
          print 'erro, comprimento de onda ou estado inicial inapropriado'
          sys.exit()
        nf = 1.0 / np.sqrt(temp)
        
        if (np.abs(nf- int(round(nf))) > 1e-6):
          print 'O sistema não absorverá esse fóton pois não\
      propicia uma transição'
          print nf, np.abs(nf- int(round(nf)))
          sys.exit()
        else:
          print 'o estado final será:', int(round(nf))
      
[usuario@pclabfis: ]# python exercicio02.py
digite:
1 - para emissão e
2 - para absorção
1

qual é o estado inicial do elétron: 5
para qual estado o elétron vai: 7
o estado final deve ser menor que o inicial

[usuario@pclabfis: ]# python exercicio02.py
digite:
1 - para emissão e
2 - para absorção
1

qual é o estado inicial do elétron: 7
para qual estado o elétron vai: 5
o comprimento de onda do fóton emitido é: 4.62483558424e-06

Exercício 03 (4.0 pts)

Dois cientistas, Albert e Issac, analisam um experimento que resultou na criação de uma partícula. Ambos anotam suas observações durante $2$ minutos para depois comparar.

mov. relativo

Segundo Albert, a partícula foi criada em $\vec{r}=0$ e se move em linha reta com velocidade de $\vec{v} = \left(30.0\, m/s\right) \hat{x}$ constante. Albert também nota que o Issac se move com aceleração constante de $\vec{a} = \left(9,8\,m/s^2\right) \hat{y}$.

A partir dos dados acima, qual será o trajeto que a partícula seguira visto por Issac, isto é, como varia $\vec{r}$ em função do tempo. Crie um gráfico de $x$ vs $y$ na perspectiva de Issac. O gráfico deverá ter 20 pontos. Coloque nome aos eixos e os dados devem ser representado por pontos no gráfico.

Utilize a função polyfit do numpy e ajuste os dados da observação do Issac. A curva de ajuste deve ser uma linha e ser traçada no gráfico sobre os pontos (ou seja, tanto os ponto como o ajuste devem estar no mesmo gráfico). O gráfico final deve ser salvo em formato de figura (png). O programa deve imprimir na tela o ajuste resultante.

Solução

      #/usr/bin/env python
      #-*- coding: utf-8 -*-

      import numpy as np
      import matplotlib.pyplot as plt
      import sys

      t = np.linspace(0, 120., 20)
      vpxo = 30.0
      vpyo = 0.0
      ai   = 9.8
      ap   = -ai
      print 'Issac afirma que\
      a aceleração da partícula é: ', ap
      
      yp = vpyo * t + 0.5 * ap * t**2
      xp = vpxo * t

      #ajuste
      coef = np.polyfit(xp, yp, 2)

      print '\nPolinomio ajustado'
      pol = np.poly1d(coef)
      print pol

      yajus = pol(xp)

      plt.plot(xp, yp, linestyle=' ', marker="o",\
        color='black', label='dados')
      plt.plot(xp, yajus, linestyle='-',\
        color='black', label='ajuste')
        
      plt.legend(loc='upper right')
        
      plt.xlabel(r'$x_p$', fontsize=30)
      plt.ylabel(r'$y_p$', fontsize=30)
      plt.title(u"Exercício 03", fontsize=30)
      plt.tight_layout()
      plt.savefig('exercicio03.png')
      plt.show()
      
[usuario@pclabfis: ]# python exercicio03.py
Issac afirma que a aceleração da partícula é: -9.8

Polinomio ajustado
           2
-0.005444 x + 5.673e-15 x - 1.129e-11
campo da carga

Está é o principio de equivalência de Einstein, a partir desta observação, Issac no sabe dizer se ele está acelerando ou na presencia de um campo.