{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "> Texto fornecido sob a Creative Commons Attribution license, CC-BY. Todo o código está disponível sob a FSF-approved BSD-3 license.
\n", "> (c) Original por Lorena A. Barba, Gilbert F. Forsyth em 2017, traduzido por Felipe N. Schuch em 2020.
\n", "> [@LorenaABarba](https://twitter.com/LorenaABarba) - [@fschuch](https://twitter.com/fschuch)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "12 passos para Navier-Stokes\n", "======\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Continuamos nossa jornada para resolver a equação de Navier-Stokes, esse é o Passo 4. Não continue a menos que você tenha completado as tarefas anteriores. Na verdade, esse passo será uma combinação dos dois anteriores \\[[2](./02_Passo_2.ipynb),[3](./04_Passo_3.ipynb)\\]. O maravilhoso *reaproveitamento de código*!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Passo 4: Equação de Burgers\n", "----\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Você pode ler mais sobre a equação de Burgers na sua [página wikipedia](http://en.wikipedia.org/wiki/Burgers'_equation).\n", "\n", "A equação de Burgers em uma dimensão se parece com:\n", "\n", "$$\\frac{\\partial u(x,t)}{\\partial t} + u(x,t) \\frac{\\partial u(x,t)}{\\partial x} = \\nu \\frac{\\partial ^2u(x,t)}{\\partial x^2}$$\n", "\n", "Como você pode perceber, ela é uma combinação entre convecção não linear e difusão. É surpreendente o quanto você aprende com essa pequena e elegante equação!\n", "\n", "Discretizamos a equação usando os mesmos métodos que já foram detalhados nos Passos [1](./01_Passo_1.ipynb) a [3](./04_Passo_3.ipynb). Usando diferença para frente para a derivada temporal, diferença para trás para a derivada espacial de primeira ordem e um esquema de diferença centrada para a derivada segunda. A equação é então escrita como:\n", "\n", "$$\\frac{u_i^{n+1}-u_i^n}{\\Delta t} + u_i^n \\frac{u_i^n - u_{i-1}^n}{\\Delta x} = \\nu \\frac{u_{i+1}^n - 2u_i^n + u_{i-1}^n}{\\Delta x^2}$$\n", "\n", "Como antes, uma vez conhecida a condição inicial, a única incógnita é $u_i^{n+1}$. Vamos prosseguir no tempo com:\n", "\n", "$$u_i^{n+1} = u_i^n - u_i^n \\frac{\\Delta t}{\\Delta x} (u_i^n - u_{i-1}^n) + \\nu \\frac{\\Delta t}{\\Delta x^2}(u_{i+1}^n - 2u_i^n + u_{i-1}^n)$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Condição Inicial e de Contorno\n", "\n", "Para examinar algumas propriedades interessantes da equação de Burgers, é adequado o uso de condições inicial e de contorno diferentes do que usamos nas tarefas anteriores.\n", "\n", "A nossa condição inicial para esse problema agora será:\n", "\n", "\\begin{eqnarray}\n", "u &=& -\\frac{2 \\nu}{\\phi} \\frac{\\partial \\phi}{\\partial x} + 4 \\\\\\\n", "\\phi &=& \\exp \\bigg(\\frac{-x^2}{4 \\nu} \\bigg) + \\exp \\bigg(\\frac{-(x-2 \\pi)^2}{4 \\nu} \\bigg)\n", "\\end{eqnarray}\n", "\n", "Que tem solução analítica, dada por:\n", "\n", "\\begin{eqnarray}\n", "u &=& -\\frac{2 \\nu}{\\phi} \\frac{\\partial \\phi}{\\partial x} + 4 \\\\\\\n", "\\phi &=& \\exp \\bigg(\\frac{-(x-4t)^2}{4 \\nu (t+1)} \\bigg) + \\exp \\bigg(\\frac{-(x-4t -2 \\pi)^2}{4 \\nu(t+1)} \\bigg)\n", "\\end{eqnarray}\n", "\n", "Nossa condição de contorno será:\n", "\n", "$$u(0) = u(2\\pi)$$\n", "\n", "Ela é denominada condição de contorno *periódica*. Preste atenção! Isso pode lhe causar certa dor de cabeça se você não tratá-la cuidadosamente." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Poupando tempo com SymPy\n", "\n", "A condição inicial que usaremos para a Equação de Burgers pode ser meio trabalhosa para ser calculada à mão. A derivada $\\frac{\\partial \\phi}{\\partial x}$ não é lá muito complicada, mas seria fácil perder um sinal ou esquecer um fator de $x$ em algum lugar, então vamos usar Sympy para nos ajudar.\n", "\n", "[SymPy](http://sympy.org/en/) é uma biblioteca Python para metemática simbólica. Ela tem várias das funcionalidades de cálculo simbólico como Mathematica, com o benefício adicional de que podemos facilmente converter os resultados de volta para nosso cálculo em Python (SymPy também é grátis e de código aberto).\n", "\n", "Começamos carregando a biblioteca SymPy, em conjunto com nossa biblioteca preferida, Numpy." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy\n", "import sympy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos também informar ao SymPy que nós queremos que todas impressões sejam renderizadas usando $\\LaTeX$. Isso vai deixar nosso Notebook incrível!" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sympy import init_printing\n", "init_printing(use_latex=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Começamos por definir nossas variáveis simbólicas para as três variáveis presentes na nossa condição inicial e então digitar a equação completa para $\\phi$. Vamos obter uma versão satisfatoriamente renderizada para nossa equação para $\\phi$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOgAAAAfBAMAAAAfEJzqAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEIl2mSJE3e9UMqtmzbsXyEShAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7ElEQVRIDaWWzWsTQRjGn02arZuPJpW9SAksRBAFNbUVPHhYMEUEDwv15kUoKPSUQg8BD1pvgoeAXnoL8Sxs/oNIDxLwkJwlkP4DUqH3+k7mY5PNTD62A9l95519fs/MvrNDgESt/SBIpAOSKzHK1hOaJleib10kNE2uBJykK9UoD+X8z3ngyT67y3JsU1yeX1MDJ13SKDNVYZI/Qiak2Bf98U2WYw2wOpMDM7GR42uUOSk/HCDPJuDLBLvLcjhNuJve5Eg8NnJONUpXqK3mAHdeUscHMo+esjWz5tTtRuM9EOLDVZ2n9FcjJ6dRHghGGgOsA7drx7WmY488kS4HTipN8Uj0jTcjZ0Mj6QFurVZrtnc+tcps3KdfugqLki/G5XCpoOjTb24zcVDQyOQMgRN8y9MDPpDaaHX5o6yQPXoBy690hqNb6RanAzcvg1ePqeMDa2eVFk+zQnZy1JE15mnN1chRO2xCNJPzJwZVSLt3QTNyTjVC9X3JsZYMJu+srPObkePrdG91yXiOnUgLmoHDTiTV7L/UzlG8WqFdKHUULMmJBLFog0/Kbo3zKXbtYGqm4wHzRQDAj+HlAL+46T7wmsCsjO0T/t3GfL7G+rIrAFTeBQApAOwf3DQEzig73jtHgGb3GUwlgDbyAkBkeqtQcv5hZPlIHXcj05lvATCYCgBcLcCq7AaRmYyqhRI+Zkd2FagjVXtOpyBopZoTRZrGOAKAAy3gXZDxpJW6ZytP7mXDQpBvwupTVr5ezdkpTac5EoCeDmB9httSZlFwo5Te3gOt1PG7kal5pTMcDqCVagC5Lzs/IysVWQ/3cnfpH0KIzDN6+2yl3y+biNf0/nDYGA7/0GicIwDY0gGKoTLSBWJ0/Hpp3Lx7TRwxzWlA0dN5qdw+j7Ii4asBFYiamjjiGJ4GrHtAVRFmAvvNZEp3IglTI2fqGBaAdB8uFS15E6arcXZ/d5M7klKY4rqclSYhTVcSXffhzdUB/wGbZ/+XrVaUnQAAAABJRU5ErkJggg==\n", "text/latex": [ "$$e^{- \\frac{\\left(- 4 t + x - 2 \\pi\\right)^{2}}{4 \\nu \\left(t + 1\\right)}} + e^{- \\frac{\\left(- 4 t + x\\right)^{2}}{4 \\nu \\left(t + 1\\right)}}$$" ], "text/plain": [ " 2 2 \n", " -(-4⋅t + x - 2⋅π) -(-4⋅t + x) \n", " ─────────────────── ─────────────\n", " 4⋅ν⋅(t + 1) 4⋅ν⋅(t + 1) \n", "ℯ + ℯ " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x, nu, t = sympy.symbols('x nu t')\n", "phi = (sympy.exp(-(x - 4 * t)**2 / (4 * nu * (t + 1))) +\n", " sympy.exp(-(x - 4 * t - 2 * sympy.pi)**2 / (4 * nu * (t + 1))))\n", "phi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ela parece um pouco pequena, mas está tudo em ordem. Agora, obter a derivada parcial $\\frac{\\partial \\phi}{\\partial x}$ é uma tarefa trivial." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$- \\frac{\\left(- 8 t + 2 x\\right) e^{- \\frac{\\left(- 4 t + x\\right)^{2}}{4 \\nu \\left(t + 1\\right)}}}{4 \\nu \\left(t + 1\\right)} - \\frac{\\left(- 8 t + 2 x - 4 \\pi\\right) e^{- \\frac{\\left(- 4 t + x - 2 \\pi\\right)^{2}}{4 \\nu \\left(t + 1\\right)}}}{4 \\nu \\left(t + 1\\right)}$$" ], "text/plain": [ " 2 2 \n", " -(-4⋅t + x) -(-4⋅t + x - 2⋅π) \n", " ───────────── ───────────────────\n", " 4⋅ν⋅(t + 1) 4⋅ν⋅(t + 1) \n", " (-8⋅t + 2⋅x)⋅ℯ (-8⋅t + 2⋅x - 4⋅π)⋅ℯ \n", "- ─────────────────────────── - ───────────────────────────────────────\n", " 4⋅ν⋅(t + 1) 4⋅ν⋅(t + 1) " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phiprime = phi.diff(x)\n", "phiprime" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Se você quiser ver a versão não rederizada, basta apenas usar o comando `print()`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-(-8*t + 2*x)*exp(-(-4*t + x)**2/(4*nu*(t + 1)))/(4*nu*(t + 1)) - (-8*t + 2*x - 4*pi)*exp(-(-4*t + x - 2*pi)**2/(4*nu*(t + 1)))/(4*nu*(t + 1))\n" ] } ], "source": [ "print(phiprime)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### E agora?\n", "\n", "Uma vez que temos a versão *Pythonica* da nossa derivada, podemos terminar de escrever a condição inicial completa e então traduzir ela para uma expressão Python utilizável. Para tanto, usaremos a função *lambdify*, que toma uma equação simbólica do SymPy e a transforma em uma função invocável. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2*nu*(-(-8*t + 2*x)*exp(-(-4*t + x)**2/(4*nu*(t + 1)))/(4*nu*(t + 1)) - (-8*t + 2*x - 4*pi)*exp(-(-4*t + x - 2*pi)**2/(4*nu*(t + 1)))/(4*nu*(t + 1)))/(exp(-(-4*t + x - 2*pi)**2/(4*nu*(t + 1))) + exp(-(-4*t + x)**2/(4*nu*(t + 1)))) + 4\n" ] } ], "source": [ "from sympy.utilities.lambdify import lambdify\n", "\n", "u = -2 * nu * (phiprime / phi) + 4\n", "print(u)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lambdify\n", "\n", "Para que lambdify transforme a expressão em uma função invocável, dizemos ao lambdify quais variáveis deve solicitar e a equação na qual queremos conectá-la." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.49170664206445\n" ] } ], "source": [ "ufunc = lambdify((t, x, nu), u)\n", "print(ufunc(1, 4, 3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### De volta à equação de Burgers \n", "\n", "Agora que temos a condição inicial preparada, podemos prosseguir para finalizar nosso problema. Podemos exibir nossa condição inicial no gráfico da condição inicial (CI) usando nossa função lambdify." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4. , 4.06283185, 4.12566371, 4.18849556, 4.25132741,\n", " 4.31415927, 4.37699112, 4.43982297, 4.50265482, 4.56548668,\n", " 4.62831853, 4.69115038, 4.75398224, 4.81681409, 4.87964594,\n", " 4.9424778 , 5.00530965, 5.0681415 , 5.13097336, 5.19380521,\n", " 5.25663706, 5.31946891, 5.38230077, 5.44513262, 5.50796447,\n", " 5.57079633, 5.63362818, 5.69646003, 5.75929189, 5.82212374,\n", " 5.88495559, 5.94778745, 6.0106193 , 6.07345115, 6.136283 ,\n", " 6.19911486, 6.26194671, 6.32477856, 6.38761042, 6.45044227,\n", " 6.51327412, 6.57610598, 6.63893783, 6.70176967, 6.76460125,\n", " 6.82742866, 6.89018589, 6.95176632, 6.99367964, 6.72527549,\n", " 4. , 1.27472451, 1.00632036, 1.04823368, 1.10981411,\n", " 1.17257134, 1.23539875, 1.29823033, 1.36106217, 1.42389402,\n", " 1.48672588, 1.54955773, 1.61238958, 1.67522144, 1.73805329,\n", " 1.80088514, 1.863717 , 1.92654885, 1.9893807 , 2.05221255,\n", " 2.11504441, 2.17787626, 2.24070811, 2.30353997, 2.36637182,\n", " 2.42920367, 2.49203553, 2.55486738, 2.61769923, 2.68053109,\n", " 2.74336294, 2.80619479, 2.86902664, 2.9318585 , 2.99469035,\n", " 3.0575222 , 3.12035406, 3.18318591, 3.24601776, 3.30884962,\n", " 3.37168147, 3.43451332, 3.49734518, 3.56017703, 3.62300888,\n", " 3.68584073, 3.74867259, 3.81150444, 3.87433629, 3.93716815,\n", " 4. ])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from matplotlib import pyplot\n", "%matplotlib inline\n", "\n", "###Declaração de variáveis\n", "nx = 101\n", "nt = 100\n", "dx = 2. * numpy.pi / (nx - 1)\n", "nu = .07\n", "dt = dx * nu\n", "\n", "x = numpy.linspace(0, 2 * numpy.pi, nx)\n", "un = numpy.empty(nx)\n", "t = 0\n", "\n", "u = numpy.asarray([ufunc(t, x0, nu) for x0 in x])\n", "u" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pyplot.figure(figsize=(11, 7), dpi=100)\n", "pyplot.plot(x, u, marker='o', lw=2)\n", "pyplot.xlim([0, 2 * numpy.pi])\n", "pyplot.ylim([0, 10]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Essa definitivamente não é a função chapéu com a qual viemos lidando até agora. Chamamo ela de *função dente de serra* (\"saw-tooth function\"). Seguimos adiante para ver o que acontece. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Condição de Contorno Periódica\n", "\n", "Uma das grandes diferenças entre o Passo 4 e as lições anteriores é o emprego da condição de contorno *periódica*. Se você experimentar diferentes parâmetros nos Passos 1 e 2 e tentar executar as simulações por mais tempo (aumentando `nt`) vai notar que a onda inicial vai continuar se movendo para a direita até que ela não mais sequer aparece no gráfico.\n", "\n", "Com condições de contorno periódicas, quando um ponto chega ao lado direito do domínio, ele *contorna* de volta para o início do domínio.\n", "\n", "Apressentamos novamente a equação discretizada que desenvolvemos no início desse notebook:\n", "\n", "$$\n", "u_i^{n+1} = u_i^n - u_i^n \\frac{\\Delta t}{\\Delta x} (u_i^n - u_{i-1}^n) + \\nu \\frac{\\Delta t}{\\Delta x^2}(u_{i+1}^n - 2u_i^n + u_{i-1}^n)\n", "$$\n", "\n", "Qual o *significado* de $u_{i+1}^n$ quando $i$ já está ao final do domínio?\n", "\n", "Pense sobre isso por um minuto antes de proceguir." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "for n in range(nt): #Laço temporal\n", " un = u.copy()\n", " for i in range(1, nx-1):\n", " u[i] = un[i] - un[i] * dt / dx *(un[i] - un[i-1]) + nu * dt / dx**2 *\\\n", " (un[i+1] - 2 * un[i] + un[i-1])\n", " u[0] = un[0] - un[0] * dt / dx * (un[0] - un[-2]) + nu * dt / dx**2 *\\\n", " (un[1] - 2 * un[0] + un[-2])\n", " u[-1] = u[0]\n", " \n", "u_analytical = numpy.asarray([ufunc(nt * dt, xi, nu) for xi in x])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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T1BeXs6gQYMYOnQoF154IStXruzW382RLCPdA5AkSZKOCnt2wH8ck55n//tayBrY5dMfeughJk2axKRJk7jiiiu4/vrruemmm1IqdF/72te44447GD58OJ/73Oe4+uqrmTdvHgANDQ1ccMEFfOtb3yInJ4ef//znXHTRRSxfvpzjjz/+gOddc801nHnmmaxbt47i4mIAHn/8cRoaGvjIRz7CpZdeyooVKygtLeWb3/wmAMOHD2f16tUp91m4cCHvf//7ufrqq7nrrrvIyMjgmWeeIZFIAMnQ+6UvfYmysjK2b9/O17/+dT784Q+zcOFCYjHrZoZDSZIkSSl++tOfcsUVVwBw/vnn09DQwNNPP80555zTes63v/1tzjrrLABuvPFGPvShD9HY2EhOTg4nnngiJ554Yuu53/rWt/j973/Pww8/zHXXXXfA82bOnMmkSZO47777+PKXvwzAvffey+WXX05eXh6QnEKam5tLUVFRu+O+/fbbOeWUU7j77rtbX5s6dWrr+5deeukBn+eIESNYsmQJpaWlXf77OVIZDiVJkqTDITM3WcFL17O7aPny5cyfP5/f/e53AGRkZPDRj36UOXPmpITDadOmtb7fUu3bsGEDxx9/PNu3b+eWW27h0UcfZe3atTQ1NbFz584O1y5ec801/PjHP+bLX/4yGzZs4LHHHuPpp5/u1qe5cOFCLr/88naPr1y5kptuuokXX3yRTZs2EYYhAGvWrDEcYjiUJEmSDo8g6NbUznT56U9/SlNTE8cee2zra1EUkZmZ2bp2DyAzM7P1/Zbppi1h69/+7d948skn+e53v8uECRMYMGAAl112Gbt37273uVdeeSU33ngjL7zwAi+88AJjxoxh9uzZ3Rr7gAEDOjx+0UUXMWrUKH7yk59wzDHHEIYhpaWlHY7raGI4lCRJkgQkN4H5xS9+wR133MEHPvCBlGOXXnopDzzwQJcqbBUVFVx11VV8+MMfBpJrEPdfH7i/oUOHcskll3Dvvffywgsv8OlPfzrleFZWVuvawfZMmzaNp59+mltuueWAY5s3b2bp0qX86Ec/ag2dlZWVnX4uRxPDoSRJkiQAHn30UbZu3co//uM/HtA78LLLLuOnP/0p3/ve9zq9z4QJE/jd737HRRddRBAE3HTTTa1VxY5cc801XHjhhSQSCT71qU+lHBszZgwvvfQS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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pyplot.figure(figsize=(11, 7), dpi=100)\n", "pyplot.plot(x,u, marker='o', lw=2, label='Computacional')\n", "pyplot.plot(x, u_analytical, label='Analítico')\n", "pyplot.xlim([0, 2 * numpy.pi])\n", "pyplot.ylim([0, 10])\n", "pyplot.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "O que vem agora?\n", "----\n", "\n", "Os Passos que seguem, do 5 ao 12, serão considerados em duas dimensões. Mas será fácil extender os esquemas 1D de diferenças finitas para 2D ou 3D. Apenas aplique a definição: uma derivada parcial com respeiro a $x$ é a variação na direção $x$ *enquanto mantemos $y$ constante*.\n", "\n", "Antes de proceguir para o [Passo 5](./07_Passo_5.ipynb), tenha certeza que tenha completado seu próprio código para os Passos 1 à 4, e que tenha experimentado diferentes combinações de parâmetros e refletido sobre o que está acontecendo. Adicionalmente, recomendamos que faça uma pequena pausa para aprender sobre [operações com arranjos com NumPy](./06_Operacoes_de_arranjos_com_NumPy.ipynb)." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "def css_styling():\n", " styles = open(\"../styles/custom.css\", \"r\").read()\n", " return HTML(styles)\n", "css_styling()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> A célula acima executa o estilo para esse notebook. Nós modificamos o estilo encontrado no GitHub de [CamDavidsonPilon](https://github.com/CamDavidsonPilon), [@Cmrn_DP](https://twitter.com/cmrn_dp)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }