Terceira Lista

Acesso rápido

Ex. 1 Ex. 2 Ex. 3 Ex. 4 Ex. 5 Ex. 6 Ex. 7

Instruções

  • os exercícios marcados em verde foram resolvidos em sala de aula. Uma possível solução é fornecida aqui, junto ao exercício.
  • os exercícios marcados em preto devem ser entregues em dupla no dia 03/12/2020.
  • as porcentagens no começo de cada exercício são uma maneira de indicar o seu grau de dificuldade. Mas não se apegue muito a esses valores: talvez você ache fáceis alguns que eu julgo como difíceis — e vice versa!
  • use recursos dos módulos scipy.integrate à vontade

Exercício 1: Carro de corrida

  • dificuldade: 25%

Um carro de corrida termina uma volta de certo circuito em 84 segundos. Durante a volta, medidas de velocidade (v) foram tomadas a cada 6 segundos e resultaram nos valores listados abaixo:

t (s) v (km/h) t (s) v (km/h) t (s) v (km/h)
0 124 30 133 60 78
6 134 36 121 66 89
12 148 42 109 72 104
18 156 48 99 78 116
24 147 54 85 84 123

Qual é a extensão da pista? Estime o resultado usando tanto o método dos trapézios quanto o de Simpson.

A solução abaixo usa as funções vistas em aula:

import numpy as np

v = np.array([124, 134, 148, 156, 147, 133, 121, 109, 99, 85, 78, 89, 104, 116, 123])
v = v / 3.6  # converter km/h para m/s

h = 6.  # intervalo de tempo entre as medidas

# Regra dos Trapézios

s = v[0] + 2 * np.sum(v[1:-1]) + v[-1]
A = .5 * h * s
print(f'A pista tem {A:.2f} m de extensão (trapézios)')

# Regra de Simpson

si = np.sum(v[1::2])
sp = np.sum(v[2:-1:2])
s = v[0] + 4 * si + 2 * sp + v[-1]
A =  h * s / 3.
print(f'A pista tem {A:.2f} m de extensão (Simpson)')

Exercício 2: Superfície de um lago

  • dificuldade: 35%

A figura representa a fotografia de um lago, com as medidas dadas em quilômetros. Calcule a área do lago usando a regra de Simpson.

Um lago
Um lago

Exercício 3: Perímetro da elipse

  • dificuldade: 25%

O perímetro de uma elipse com semi-eixo maior $a$ e semi-eixo menor $b$ é dado por

\[C = 4a \int_0^{\pi/2} \sqrt{ 1 - e^2 \cos^2 \theta} \, d\theta\]

sendo

\[e = \sqrt{ 1 - \left(\frac{b}{a} \right)^2 }\]

a excentricidade da elipse (se $b>a$, troque as posições de $a$ e $b$ na fração).

  1. Calcule $C$ quando $a=20\,$cm e $b=10\,$cm.
  2. Faça um gráfico de $C$ em função de $e$ para $a=10\,$cm no intervalo $0.1 \le e \le 10$. No mesmo gráfico, mostre o perímetro de um círculo de raio $a$.

A solução abaixo usa a função quad do módulo scipy.integrate para o cálculo da integral. Usa também um recurso dessa função: o argumento opcional args, que passa outros argumentos que o integrando possa ter além da variável de integração.

Além disso, no item b usei abrangência de listas (list comprehension) para gerar numa única linha uma lista de valores em função da excentricidade $e$, que é então convertida em array. A primeira coluna contém os valores da integral, a segunda os erros de integração estimados.

Repare também o uso dos métodos .min() e .max() aplicados ao array excs para delimitar os valores do eixo horizontal do gráfico.

Segue o código:

import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as plt

def integrando(th, e):
    return np.sqrt(1 - (e * np.cos(th))**2)
  
# item a
a, b = 20, 10
e = np.sqrt(1 - (b / a) ** 2)
integral, erro = spi.quad(integrando, 0, np.pi/2, args=(e))
perimetro = 4 * a * integral
print(perimetro)

# item b
a = 10
excs = np.linspace(0.1, 1, 101)
integral = np.array([spi.quad(integrando, 0, np.pi/2, args=(e)) for e in excs])
perimetro = 4 * a * integral[:, 0]

perimetro_circulo = 2 * np.pi * a

plt.figure()
plt.xlim(excs.min(), excs.max())
plt.plot(excs, perimetro, label='elipse')
plt.axhline(perimetro_circulo, color='red', label='circulo')
plt.legend()
plt.show()
Perímetro em função da excentricidade para $a=10$
Perímetro em função da excentricidade para $a=10$

Exercício 4: A função erro

  • dificuldade: 40%

A função erro $(\mathrm{erf})$ é importante em Estatística, Transferência de Calor e Mecânica Quântica, entre outras áreas do conhecimento. Ela é definida pela seguinte integral:

\[\mathrm{erf}\,(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} \, dt\,,\]
  1. Monte uma tabela da função erro com seis casas decimais para valores de $x$ no intervalo $[0,\ 3]$ com um passo $\Delta x=0.1$.
  2. Faça um gráfico da função no mesmo intervalo.
  3. Estime graficamente o valor do limite
\[\lim_{x\to\infty} \mathrm{erf}\,(x) \,.\]

Segue uma solução possível usando arrays e list compreehension:

import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as plt

def f(x):
  return np.exp(-x*x)

xi, xf, dx =  0, 3, 0.1
x = np.arange(xi, xf+dx, dx)
y = np.array([spi.quad(f, 0, xn) for xn in x])
erf = 2 / np.sqrt(np.pi) * y[:,0]

plt.figure()
plt.plot(x, erf)
plt.show()

Exercício 5: Capacidade térmica de sólidos

  • dificuldade: 50%

A função de Debye é definida como

\[D(x) = \frac{9}{x^3} \int_0^x \frac{u^4 e^u}{(e^u-1)^2} du\]

(cuidado! O integrando não é definido em $u=0$ e você tem que tomar cuidado ao calcular a integral).

No modelo de Debye, o calor específico molar de um sólido a volume constante é dado por

\[c_v(T) = R D\left(\frac{\theta_D}{T}\right)\]

sendo $T$ a temperatura em Kelvin, $\theta_D$ a temperatura de Debye do material e $R=8.31451\,$J$\,$mol$\,^{-1}$K$\,^{-1}$ a constante universal dos gases. O calor específico molar mede a quantidade de energia que um mol do material absorve/libera devido a alguma variação de temperatura.

  1. Implemente a função de Debye em python.
  2. Faça um gráfico de $c_v$ em função de $T$ para o diamante, para o qual $\theta_D=1849\,$K. No mesmo gráfico, mostre os pontos experimentais encontrados nos seguintes artigos:

    Os dados estão aqui em arquivos-texto (diamante-pitzer.dat e diamante-victor.dat) ou neste arquivo excel.

Exercício 6: Erro na integração 1

  • dificuldade: 20%

Delimite o erro que se comete ao calcular

\[\int_0^{0.4} e^x dx\]

pela fórmula de Simpson com $h=0.1$.

A fórmula para a delimitação do erro no cálculo da integral

\[\int_a^b f(x) \, dx\]

pelo método de Simpson é

\[E \le \frac{|b-a|^5}{180 n^4} \, \max |f^{iv}(x)|\]

Nesse caso, $a=0$, $b=0.4$ e $f(x)=e^x$, e como todas as derivadas de $f(x)=e^x$ são iguais à própria função, temos que $\max f^{iv}(x)= e^{0.4}=1.491825\,$ (em cálculos numéricos, trabalhe sempre em dupla precisão para evitar perda de algarismos significativos). Além disso, sabemos que

\[h = \frac{b-a}{n} \quad \Rightarrow \quad n = \frac{b-a}{h}\]

que nos fornece $n=4$. Com isso, delimitamos o erro em

\[E \le \frac{0.4^5}{180 \times 4^4} \times 1.491825 = 3.3152 \times 10^{-7}\]

Mas, como nesse caso conhecemos o valor exato da integral, podemos calcular o erro cometido ao usar a regra de Simpson (ao invés de apenas delimitá-lo). A integral vale, com doze casas decimais:

\[\int_0^{0.4} e^x dx = e^{0.4} - e^{0} = 1.491825 - 1 = 0.49182469764\]

Já a regra de Simpson com $h=0.1$ fornece, com doze casas decimais:

\[\int_0^{0.4} e^x dx \approx \frac{0.1}{3} \left( e^{0} + 4 e^{0.1} + 2 e^{0.2} + 4 e^{0.3} + e^{0.4} \right) = 0.491824970553\]

O erro entáo é a diferença entre o valor exato e o aproximado, dentro da precisão de 12 casas decimais:

\[E = 2.72913 \times 10^{-7}\]

cujo valor realmente cai dentro do intervalo em que o havíamos delimitado.

Exercício 7: Erro na integração 2

  • dificuldade: 30%

Deseja-se calcular

\[\ln 2 = \int_1^{2} \frac{dx}{x}\]

com erro inferior a $1/2400$ usando a fórmula dos trapézios. Qual deve ser o passo escolhido? Repita o exercício para a fórmula de Simpson.

:bulb: Se for usar o python para calcular logaritmos naturais (ou seja, em base $e$), use a função numpy.log. Se quiser log na base 10, use numpy.log10 e, em base 2, numpy.log2. Para qualquer outra base, use a fórmula de mudança de base, $\log_a b = \log_c a \, / \log_c b$ (e use $c=e$, $10$ ou $2$ em python, apesar de a fórmula valer para qualquer base $c$).


Página atualizada em 12-11-2020 13:19