{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Vamos Começar\n", "\n", "Baixar e Instalar o [Anaconda](https://www.continuum.io/downloads) (Python 3.5)\n", "\n", "Inicializar o Spyder (IDE Python)\n", "\n", "![](../resource/menu-anaconda-spyder.gif)\n", "\n", "Painéis Disponíveis:\n", "\n", "1. Editor de arquivos\n", "1. Inspetor de Variáveis\n", "1. Console Python\n", "\n", "![](../resource/spyder.png)\n", "\n", "**Atalhos Importantes:**\n", "\n", "+ F5 - Executa Script\n", "+ Ctrl+Espaço - Lista de Funções\n", "+ Ctrl+1 - Comenta Linha\n", "+ Ctrl+I - Mostra Documentação\n", "+ Ctrl+Shift+I - Foco no Console\n", "+ Ctrl+Shift+V - Foco Inspetor de Variáveis\n", "+ Ctrl+Shift+E - Foco no Editor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercício - Análise de Poço por Curvas de Declínio\n", "\n", "*Baseado no Exemplo 11.1 do livro [Engenharia de Reservatórios de Petróleo](http://www.saraiva.com.br/engenharia-de-reservatorios-de-petroleo-198191.html) de Rosa, A. et al.*\n", "\n", "### Curvas de Declínio\n", "\n", "![](https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/GlennPool.jpg/220px-GlennPool.jpg)\n", "\n", "\n", ">Método simplificado e bastante usado na prática para a realização de ajuste de histórico e/ou previsão do comportamento de poços isolados (Rosa, A. et al, 2006)\n", "\n", "Equação do Declinio Hiperbólico:\n", "\n", "$$q = \\frac{q_i}{(1 + n a_i t)^{1/n}}$$\n", "\n", "Dado o histórico de produção de um poço na tabela abaixo:\n", "\n", "| *t (ano)* | *q (m³std/d)* |\n", "|-----------|---------------|\n", "| 0 | 100 |\n", "| 1 | 77.0 |\n", "| 2 | 61.0 |\n", "| 3 | 49.5 |\n", "| 4 | 41.0 |\n", "| 5 | 34.5 |\n", "\n", "Determinar, através da equação do declínio hiperbólico:\n", "\n", " 1. Tempo de abandono, considerando uma vazão de abandono de 5 m³std/d;\n", " 1. Produção acumulada até o abandono.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solução\n", "\n", "Vamos criar uma lista com os dados do histórico" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "qm = [100, 77, 61, 49.5, 41, 34.5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Listas não são Arrays!**\n", "\n", "|Lista |Array |\n", "|:-------------------------------:|:------------------:|\n", "|![](../resource/paperbox.jpg) |![](../resource/beerbox.jpg)|" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "qm = np.array([100, 77, 61, 49.5, 41, 34.5])\n", "tsteps = np.arange(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Funções" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Utilizando a equação de Declínio Hiperbólico, a vazão $q$ de um poço no tempo $t$ pode é dada por:\n", "\n", "$$q = \\frac{q_i}{(1 + n a_i t)^{1/n}}$$\n", "\n", "Podemos escrever esta equação em Python da seguinte forma:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def declinio_hiperb(t, qi, ai, n):\n", " '''\n", " Calcula vazão instantânea do poço usando curva de declinio hiperbólica\n", " '''\n", " q = qi / (1 + n * ai * t) ** (1 / n)\n", " return q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tipagem dinâmica e foco na legibilidade\n", "\n", "Exemplo da mesma função em C++:\n", "\n", "```C\n", "#include \n", "\n", "/*\n", " * Calcula vazão instantânea do poço usando curva de declinio hiperbólica\n", " */\n", "const double &declinio_hiper(double &t, double &qi, double &ai, double &n) \n", "{\n", " return qi / pow((1 + n * ai * t), (1 / n));\n", "}\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos testar a função" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "57.87037037037038" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "declinio_hiperb(2, 100, 0.3, 1/3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como nossos vetores tem suporte a operadores, podemos chamar a função passando um valor escalar ou vetorial:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 100. , 75.13148009, 57.87037037, 45.51661356,\n", " 36.44314869, 29.62962963])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "declinio_hiperb(tsteps, 100, 0.3, 1/3)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Plotando" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(tsteps, qm, \"ro\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEACAYAAACj0I2EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHgtJREFUeJzt3XmUlNW1/vHvllFwgA7QIII4Ic4MSoiIXYgQnNAblxMi\nQxwSf+o1JhgxTq2JJpp4veYm8UaNgCaiKIqCEWiQQlGvOABBESeCM+0IDgwCvX9/nMLGlm66q7vr\n1PB81qpFVfX7Vu9VCx+25z3vOebuiIhI7tsudgEiItIwFOgiInlCgS4ikicU6CIieUKBLiKSJxTo\nIiJ5osZAN7M7zazczJZs8V6RmZWZ2WtmNsvM2mzxs8vM7HUzW2ZmQxqzcBER+bZtdejjgaFV3hsH\nlLl7d2BO6jVmth9wKrBf6py/mJn+D0BEJENqDFx3fxL4rMrbw4CJqecTgRNTz08AJrn7BndfAbwB\n9G24UkVEpCbpdNDF7l6eel4OFKee7wK8u8Vx7wKd61GbiIjUQb2GRDysG1DT2gFaV0BEJEOapnFO\nuZl1dPeVZtYJ+DD1/ntAly2O2zX13reYmUJeRCQN7m41/TydDv0RYFTq+Shg6hbvn2Zmzc1sd2Bv\nYMHWPuBPf3J23915+23HvXAfV199dfQasuWh70Lfhb6Lmh+1UWOHbmaTgBKgnZm9A1wF/A6YbGZn\nASuAUwDcfamZTQaWAhuB/+fVVHH++bBuHQwaBPPmQadOtapVRERqUGOgu/vp1fzoqGqOvx64vja/\n+Be/gLVr4aijIJmE9u1rc5aIiFQnnTH0BnPFFSHUhwyBxx+Htm1jVpN5iUQidglZQ99FJX0XlfRd\n1I3VdmymwX6h2bdGYtxDt/7UU1BWBjvtlNFyRERygpnh27goGj3QIYT6+efDkiUwYwa0bp3RkkRE\nsl7OBDpARQWcfTa89RZMnw7bb5/RskREslpOBTrApk1w5pmwahU89BC0aJHR0kREslbOBTrAhg1w\n6qlhGGbyZGjWLIPFiYhkqdoEetathtisGdx7L3z9NYwcGbp2ERHZtqwLdIDmzWHKFPjoIzjrrDC+\nLiIiNcvKQAdo2RIefhiWLw8zYDI8MiQiknOyNtAhTF+cPh0WLoSf/1yhLiJSk6wOdAg3Gj32WFge\n4PLLFeoiItWJeut/bbVtG+4iTSTC/PQrr4xdkYhI9smJQAdo1w5mz4aSkhDqY8fGrkhEJLvkTKAD\ndOwIc+aEUG/ZEi64IHZFIiLZI6cCHWDXXb8d6mefHbsiEZHskHOBDtCtWxh+GTgwhPqIEbErEhGJ\nLycDHWDvvWHWrLDrUYsWcPLJsSsSEYkrZwMdYL/9wnK7Q4aEUB82LHZFIiLxZP089G05+OBw89HZ\nZ8PMmbGrERGJJ+1AN7OLzGyJmb1kZhel3isyszIze83MZplZm4YrtXqHHhqW2x0xItyAJCJSiNIK\ndDM7ADgbOBQ4GDjOzPYExgFl7t4dmJN6nRH9+4fldk8+GZ5+OlO/VUQke6TbofcAnnX3de6+CZgH\nnAQMAyamjpkInFj/Emtv4EC4+2448UR4/vlM/mYRkfjSDfSXgAGpIZZWwDHArkCxu5enjikHihug\nxjoZOhRuvx2OOw7+9a9M/3YRkXjSmuXi7svM7AZgFvAVsAjYVOUYN7MoS2mdcAKsXx/Cfc4c2Hff\nGFWIiGRW2tMW3f1O4E4AM7sOeBcoN7OO7r7SzDoBH27t3NLS0m+eJxIJEolEumVU65RTYN06GDw4\nXCjda68G/xUiIo0mmUySrOMsj7T3FDWzDu7+oZl1BWYC/YDLgU/c/QYzGwe0cfdxVc6rcU/Rhnbb\nbXD99TBvHuy2W8Z+rYhIg2rUTaLN7Ange8AG4GJ3n2tmRcBkoCuwAjjF3VdVOS+jgQ7wxz/CLbfA\nE09A584Z/dUiIg2iUQM9XTECHeCGG2D8+NCpF2f8Uq2ISP3UJtBz+tb/urj0Uli7Noypz50L3/te\n7IpERBpWwXToELavGzcurNQ4Zw60ych9rCIi9achl61wh5/9DBYsCKs17rhjtFJERGpNgV4Nd/jp\nT2HZsrABdatWUcsREdkmBXoNKipgzBj44AN45JGwUYaISLZSoG/Dxo1wxhmwZg1MmQLNm8euSERk\n62oT6Dm/Hnp9NG0Kf/87NGkCw4eHgBcRyVUFHegAzZrBfffBV1/BqFGwadO2zxERyUYFH+gQtq97\n8MEwnn7uuWF8XUQk1yjQU7bfPlwcffVVuPDCMBNGRCSXKNC3sMMO8OijYY76JZco1EUktyjQq9h5\n57DZ9OzZcNVVsasREam9glnLpS6KiqCsDEpKwlDMr34VuyIRkW1ToFejffuw3ssRR4RQv/ji2BWJ\niNRMgV6DTp1CqJeUhDtJzzsvdkUiItVToG9D164h1BOJEOpjxsSuSERk6xTotbDHHmFMfeDAEOqn\nnx67IhGR71Kg19I++4Tldo86KtyI9KMfxa5IROTbFOh1cMAB8M9/wtFHh079mGNiVyQiUinteehm\ndpmZvWxmS8zsHjNrYWZFZlZmZq+Z2Swzy7s9gXr3hocfhtGjw1x1EZFskVagm1k34Bygt7sfCDQB\nTgPGAWXu3h2Yk3qdd/r1C8vtDh8OTz4ZuxoRkSDdDv1zYAPQysyaAq2A94FhwMTUMROBE+tdYZYa\nMAAmTYKTToJnn41djYhImoHu7p8CNwFvE4J8lbuXAcXuXp46rBwobpAqs9SgQTBhAgwbBgsXxq5G\nRApdWhdFzWxP4GdAN2A1cL+ZjdjyGHd3M9vq8lalpaXfPE8kEiQSiXTKyArHHAP/+7/hz7KycOFU\nRKS+kskkyWSyTuektQWdmZ0KDHb3s1OvzwT6AUcCA919pZl1Aua6e48q52bNFnQNadIkGDsW5s6F\n7t1jVyMi+aYxt6BbBvQzs+3NzICjgKXANGBU6phRwNQ0Pz/nnH46XHddmKe+fHnsakSkEKU15OLu\ni83sLuB5oAJ4EbgN2BGYbGZnASuAUxqozpwwejSsXRvG1p94Arp0iV2RiBSStIZc6vUL83TIZUs3\n3wx/+UsI9U6dYlcjIvmgNkMuulO0EVx8cWWnnkxChw6xKxKRQqBAbyS/+lUI9cGDw4XSoqLYFYlI\nvtOQSyNyD3uTzpsXlgnYeefYFYlIrqrNkIsCvZG5w4UXhhuPZs4MG1GLiNSVAj1LVFTAueeG6YyP\nPhq2tBMRqQsFehbZtAlGjoRPPgmrNbZoEbsiEcklCvQss3EjnHZa+PP++6FZs9gViUiuaMw7RSUN\nTZvCPfeEbn3EiBDsIiINRYGeYc2bh+78s8/CnaXr1sWuSETyhQI9gpYtYepUWL8e+vaFl1+OXZGI\n5AMFeiStWsHkyXDRRVBSArfeGqY4ioikSxdFs8Crr4bVGrt0gb/9Ddq1i12RiGQbXRTNEfvsA888\nE9ZR79kT5syJXZGI5CJ16FmmrCxcLD3zTLj22nARVUREHXoOGjwYFi0KF0r794fXX49dkYjkCgV6\nFmrfHh55JHTqhx0WNqLW/9SIyLZoyCXLLVkSLpgecEDYjLpNm9gViUgMGnLJAwceCM89F2a+9OwJ\n8+fHrkhEspU69BwybRqccw789KdwxRVhKQERKQyN1qGb2T5mtnCLx2oz+08zKzKzMjN7zcxmmZkG\nCBrQ8cfDiy/CU09BIgFvvRW7IhHJJmkFuru/6u693L0X0AdYAzwEjAPK3L07MCf1WhrQLruEjTJO\nPBEOPRTuuy92RSKSLeo95GJmQ4Ar3X2AmS0DSty93Mw6Akl371HleA25NJAXXggXTPv3hz/+EXbc\nMXZFItJYMnVR9DRgUup5sbuXp56XA8UN8PlSjT59whBMkybQu3e4eCoihatel9XMrDlwPHBp1Z+5\nu5vZVlvx0tLSb54nEgkSiUR9yihoO+wAd9wRluQ99lgYOzY8ttP8JZGclkwmSSaTdTqnXkMuZnYC\ncJ67D029XgYk3H2lmXUC5mrIJXPefjtsnNGsGdx1F3TuHLsiEWkomRhyOZ3K4RaAR4BRqeejgKn1\n/Hypg65dYe7cMAOmT5+wd6mIFI60O3Qzaw28Bezu7l+k3isCJgNdgRXAKe6+qsp56tAz4Omn4Ywz\n4Oij4Q9/COuvi0ju0ibRBW71ajjvPFi8GCZNgoMOil2RiKRLt/4XuJ13hn/8A8aNg0GDwtRG/Vsq\nkr/UoReIN9+E4cPDmjDjx0OHDrErEpG6UIcu39hzz7CwV8+e4TFzZuyKRKShqUMvQMkkjBwJJ58M\n118PLVrErkhEtkUdumxVIgELF8K//w39+sGyZbErEpGGoEAvUN/7HkyZEmbBDBgAt9+uC6YiuU5D\nLsIrr4RFvvbcMwR7UVHsikSkKg25SK3suy88+yzstlu4YFrH5SNEJEuoQ5dvmTEDfvxjGDMGSkvD\nujAiEp86dKmzoUPDBdOFC+Hww8P8dRHJDQp0+Y7iYpg+PdyI1K8f3H137IpEpDY05CI1Wrw4XDDt\n3Rv+/OewnICIZJ6GXKTeDj4Ynn8+bG/Xqxc880zsikSkOurQpdamToWf/AQuvBAuuyxsfScimaHl\nc6XBvfcenHkmbNwIf/972FRDRBqfhlykwXXuDGVlcMwxcMgh8MADsSsSkc3UoUvaFiwIM2ESCbjl\nFmjdOnZFIvlLHbo0qr59w3z1jRvDLJgXX4xdkUhhU6BLvey4I0yYEO4qHToUbroJKipiVyVSmOqz\nSXQb4A5gf8CBMcDrwH3AbmiT6IKzYkXYmLp1a5g4ETp1il2RSP5o7CGXW4B/uvu+wEHAMmAcUObu\n3YE5qddSILp1g3nz4LDDwhDM9OmxKxIpLGl16Ga2M7DQ3feo8v4yoMTdy82sI5B09x5VjlGHXgDm\nz4cRI+D44+H3v4eWLWNXJJLbGrND3x34yMzGm9mLZna7mbUGit29PHVMOVCc5udLjjv8cFi0CD78\nEA49FF56KXZFIvmvaT3O6w1c4O7Pmdl/U2V4xd3dzLbaipeWln7zPJFIkEgk0ixDslmbNnDvveGi\n6cCBcM01YYckq7HHEBGAZDJJso6bE6Q75NIReMbdd0+9Phy4DNgDGOjuK82sEzBXQy4C8NprYc76\nLrvAnXdCu3axKxLJLY025OLuK4F3zKx76q2jgJeBacCo1HujgKnpfL7kn+7d4emnw+5IPXvC7Nmx\nKxLJP/WZtngwYdpic+BNwrTFJsBkoCuatijVmD0bRo8OHftvfgPNm8euSCT7aXEuyVoffwxnnRUW\n+7rnntDBi0j1dOu/ZK127cJyvGedBf37w223waZNsasSyW3q0CW6l1+Gc8+FVavg2mvhP/4DtlOr\nIfItGnKRnOEOM2bAFVeEtWB+/Ws49lhNcRTZTIEuOccdHn4YrrwyrAnzm9/AoEEKdhEFuuSsigqY\nPBmuvjos8vXrX8OAAbGrEolHgS45b/NWd9deC3vvHYK9b9/YVYlknma5SM5r2jTMWV+2DH70Izjp\nJDjhBFi8OHZlItlHgS45oXlz+MlP4PXX4cgjw2Yap5wCr7wSuzKR7KFAl5zSsiVcdBG88UbYpLqk\nBEaOhDffjF2ZSHwKdMlJrVvDL38Zgn2vveD734dzzoG3345dmUg8CnTJaTvtBFddFVZz7NABevWC\nCy+EDz6IXZlI5inQJS8UFcF114Ux9ebNYf/9YexY+Oij2JWJZI4CXfJKhw5w001hh6R166BHj3D3\n6Wefxa5MpPEp0CUv7bIL/OlP8OKLsHJl5Rz2zz+PXZlI41GgS17bbTe44w545hl49dUQ7L//PaxZ\nE7sykYanQJeCsPfe4Y7Txx+HBQvCzJj/+R9Yvz52ZSINR4EuBWX//eH+++HRR2HWrBD0t90GGzbE\nrkyk/hToUpB69YJp08ICYA88EC6e3nWXNtmQ3KbFuUSAefPCkr0ffQSlpXDyydpkQ7JLo662aGYr\ngM+BTcAGd+9rZkXAfcBuaJNoyTHuUFYWgn3durDC47BhWotdskNjB/q/gT7u/ukW790IfOzuN5rZ\npUBbdx9X5TwFumQ1d5g+PQR7s2ZhuuMPf6hgl7gyEeiHuPsnW7y3DChx93Iz6wgk3b1HlfMU6JIT\nKipgypSwyUZRUdg9KZGIXZUUqsYO9OXAasKQy1/d/XYz+8zd26Z+bsCnm19vcZ4CXXLKpk0waVIY\nW+/WLXTsP/hB7Kqk0NQm0JvW4/P7u/sHZtYeKEt1599wdzezrSZ3aWnpN88TiQQJtT2SxZo0gREj\n4NRTYeLE8OeBB4Zg7907dnWSr5LJJMlksk7nNMgsFzO7GvgSOAdIuPtKM+sEzNWQi+Sb9evh9tvh\nt7+Ffv3gmmvggANiVyX5rtG2oDOzVma2Y+p5a2AIsAR4BBiVOmwUMDWdzxfJZi1awAUXhN2TDjsM\nBg2C4cPDEr4iMaU707YYeNLMFgHPAtPdfRbwO2Cwmb0GHJl6LZKXWrWCX/wibLKx//4h3H/8Y1ix\nInZlUqh0Y5FIA1m1Cv7rv+DPfw7j7JdfDp07x65K8kWjDbmIyHe1aRNuRnr1Vdhhh3Dh9OKLobw8\ndmVSKBToIg2sXTu48UZYujTMZd9vPxg3Dj75ZNvnitSHAl2kkXTsCLfcAosWhR2T9tknzGVfvTp2\nZZKvFOgijaxLF/jrX8M67CtWhCV7f/c7+PLL2JVJvlGgi2TIHnvAhAnwxBOha99rL7j5Zli7NnZl\nki8U6CIZ1qMH3Htv2GBj3rzQsd96K3z9dezKJNcp0EUiOeggmDoVHnoIHnkkjLHfeSds3Bi7MslV\nmocukiXmz4crroC33w43KI0cCV27xq5KsoXmoYvkkMMPh7lzw3DM+++HbfIGD4Z77tE4u9SOOnSR\nLLVuXRiSGT8ennsubIs3Zgx8//vabKMQNep66OlSoIvU3TvvwN13h3Bv1gxGj4Yzz4ROnWJXJpmi\nQBfJM+7w1FMh2B98MCwINmYMHH98WAVS8pcCXSSPffVV2CJv/Hh46SU4/fQQ7r16xa5MGoMCXaRA\nLF8Od90Vblxq0yYMyZxxBrRvH7syaSgKdJECU1EByWTo2qdNgyOPDF370KFh7F1ylwJdpICtXg33\n3x/C/c03w76oY8aEzTgk9yjQRQQIa7RPmBCGZTp3DsF+2mnQtm3syqS2FOgi8i2bNkFZWejaZ84M\nQzFjxsBRR0GTJrGrk5oo0EWkWp9+CpMmhc79gw/CUgOjR0P37rErk61p9Fv/zayJmS00s2mp10Vm\nVmZmr5nZLDNrU5/PF5HGU1QE558f7kJ97DFYvx4GDAhLEPztb/DFF7ErlLqq71ouFwFLgc0t9zig\nzN27A3NSr0Ukyx14INx0E7z7LlxyCUyfHjbmGDkyrC9TURG7QqmNtIdczGxXYAJwHfBzdz/ezJYB\nJe5ebmYdgaS796hynoZcRHLAhx/CP/4Rxtu//BJGjQqPbt1iV1aYGnvI5WbgEmDLf7uL3X3zHufl\nQHE9Pl9EIurQAS6+GBYvhgcegI8/hkMOCXPb774b1qyJXaFU1TSdk8zsOOBDd19oZomtHePubmZb\nbcVLS0u/eZ5IJEgktvoRIpIFzKB37/D4wx/CZhwTJsBFF8FJJ4VZMj/4gVaAbGjJZJJkMlmnc9Ia\ncjGz64EzgY1AS2An4EHgUCDh7ivNrBMwV0MuIvnp/fcrV4B0DzNkRo4M89yl4WVk2qKZlQBjU2Po\nNwKfuPsNZjYOaOPu46ocr0AXySPu8H//F7r2++8P67WPHg0nnAAtW8auLn9kMtB/4e7DzKwImAx0\nBVYAp7j7qirHK9BF8tSaNWGP1PHjYdEiOPXUMCTTp4+GZOpLNxaJSDRvvVW5AmSrVqFrHzECijVV\nIi0KdBGJrqICnnwyBPvUqXDEEaFrP+YYaN48dnW5Q4EuIlnliy/CFMjx48OCYcOHh3A/6KDYlWU/\nBbqIZK033oCJE8OjffsQ7MOHhyUJ5LsU6CKS9TZtgscfD137P/8JgweHcB8yBJqmdadMflKgi0hO\nWbUK7rsvhPs774R9Uo89Fvr313i7Al1EctbSpSHcZ8yAZctg4EA4+ujw6No1dnWZp0AXkbzw0Ucw\na1YI95kzoV27ynAfMABatIhdYeNToItI3qmogBdeCOH+2GPw0ktQUhLCfehQ2GOP2BU2DgW6iOS9\nTz4J2+rNmBEeO+9c2b0fcQRsv33sChuGAl1ECkpFRVju97HHwmPx4rAD09ChIeD33jt2helToItI\nQVu1CmbPDuE+Y0bo1jeH+8CBYUmCXKFAFxFJcYclSyq79xdeCOu4bx6e2Wef7F5ATIEuIlKNzz+H\nOXMqA75p08ru/cgjYYcdYlf4bQp0EZFacA/z3jeH+4IF0LdvZfe+337xu3cFuohIGr78MixHsDng\nKyoqu/dBg2CnnTJfkwJdRKSe3MPKkJsvrD79dNiwY/O894MOykz3rkAXEWlgX30F8+ZVdu9r14Zg\nHzo0LCzWpk3j/F4FuohII3v99cq7VufPh4MPrhye6dkTttuuYX5PowW6mbUE5gEtgObAw+5+WWpP\n0fuA3dCeoiJSYNauhSeeqOzeV6+GH/4whPuQIfVb671RO3Qza+Xua8ysKTAfGAsMAz529xvN7FKg\nrbuPq3KeAl1ECsLy5ZXd+7x5sP/+lTNn+vSpW/eekSEXM2tF6NZHA1OAEncvN7OOQNLde1Q5XoEu\nIgVn/fqwt+rm7v3jj0PXvrl7b9++5vMbu0PfDngR2BO41d1/aWafuXvb1M8N+HTz6y3OU6CLSMF7\n663K7n3u3HCn6ubu/dBDoUmTbx+fqQ59Z2AmcBnw4JYBbmafuntRleMV6CIiW/j6a3jqqcqAf//9\nMGPm6KPDGHxxcQZnuZjZlcBa4Gwg4e4rzawTMHdrQy5XX331N68TiQSJRKLeNYiI5It334Vbbkny\n6KNJli+Htm1h5cprGm2WSztgo7uvMrPtCR36NcAPgU/c/QYzGwe00UVREZH0bdgAzzwDJSWNN23x\nQGAisF3qcbe7/z41bXEy0BVNWxQRaTC6sUhEJE/UJtAb6B4mERGJTYEuIpInFOgiInlCgS4ikicU\n6CIieUKBLiKSJxToIiJ5QoEuIpInFOgiInlCgS4ikicU6CIieUKBLiKSJxToIiJ5QoEuIpInFOgi\nInlCgS4ikicU6CIieUKBLiKSJxToIiJ5Iq1AN7MuZjbXzF42s5fM7D9T7xeZWZmZvWZms8ysTcOW\nKyIi1Um3Q98AXOzu+wP9gPPNbF9gHFDm7t2BOanXUo1kMhm7hKyh76KSvotK+i7qJq1Ad/eV7r4o\n9fxL4BWgMzAMmJg6bCJwYkMUma/0l7WSvotK+i4q6buom3qPoZtZN6AX8CxQ7O7lqR+VA8X1/XwR\nEamdegW6me0ATAEucvcvtvyZuzvg9fl8ERGpPQu5m8aJZs2A6cBj7v7fqfeWAQl3X2lmnYC57t6j\nynkKeRGRNLi71fTzpul8qJkZ8Ddg6eYwT3kEGAXckPpzal0LEhGR9KTVoZvZ4cATwL+oHFa5DFgA\nTAa6AiuAU9x9VYNUKiIiNUp7yEVERLJLRu8UNbOhZrbMzF43s0sz+buziZndaWblZrYkdi2xVXeT\nWiEys5Zm9qyZLTKzpWb229g1xWZmTcxsoZlNi11LTGa2wsz+lfouFlR7XKY6dDNrArwKHAW8BzwH\nnO7ur2SkgCxiZgOAL4G73P3A2PXEZGYdgY7uvig1a+oF4MRC/HsBYGat3H2NmTUF5gNj3X1+7Lpi\nMbOfA32AHd19WOx6YjGzfwN93P3Tmo7LZIfeF3jD3Ve4+wbgXuCEDP7+rOHuTwKfxa4jG1Rzk9ou\ncauKx93XpJ42B5oANf4HnM/MbFfgGOAOQJMpavEdZDLQOwPvbPH63dR7IsB3blIrSGa2nZktItyY\nN9fdl8auKaKbgUuAitiFZAEHZpvZ82Z2TnUHZTLQdfVVqpUabnmAcJPal7HricXdK9y9J7ArcISZ\nJSKXFIWZHQd86O4LUXcO0N/dewFHE9bOGrC1gzIZ6O8BXbZ43YXQpUuBS92kNgX4u7t/596FQuTu\nq4FHgUNi1xLJYcCw1NjxJOBIM7srck3RuPsHqT8/Ah4iDGF/RyYD/XlgbzPrZmbNgVMJNyJJAavh\nJrWCY2btNi85bWbbA4OBhXGrisPdf+XuXdx9d+A04HF3Hxm7rhjMrJWZ7Zh63hoYAmx1hlzGAt3d\nNwIXADOBpcB9BTyTYRLwNNDdzN4xszGxa4qoPzACGJiakrXQzIbGLiqSTsDjqTH0Z4Fp7j4nck3Z\nopCHbIuBJ7f4ezHd3Wdt7UDdWCQikie0BZ2ISJ5QoIuI5AkFuohInlCgi4jkCQW6iEieUKCLiOQJ\nBbqISJ5QoIuI5In/D0ZVIbl4cmvKAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "qs = declinio_hiperb(tsteps, 100, 0.3, 1/3)\n", "plt.plot(tsteps, qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [`plot()` function](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot) - documentação da função `plot()`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ajustando os Parâmetros da Curva de Declínio\n", "\n", "Usaremos a função [curve_fit][curve-fit] da [SciPy][scipy-ref] para encontrar os parâmetros da curva de declínio para nossos dados de histórico:\n", "\n", "[scipy-ref]: http://docs.scipy.org/doc/scipy-0.14.0/reference/index.html\n", "[curve-fit]: http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.optimize.curve_fit.html" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import scipy.optimize\n", "\n", "params, fitted = scipy.optimize.curve_fit(declinio_hiperb, tsteps, qm, p0=[100, 0.3, 1/3])\n", "qi_fit, ai_fit, n_fit = params" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100.012075806\n", "0.279526724773\n", "0.489424884092\n" ] } ], "source": [ "print(qi_fit)\n", "print(ai_fit)\n", "print(n_fit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotando contra os dados de histórico, temos:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "qs = declinio_hiperb(tsteps, qi_fit, ai_fit, n_fit)\n", "plt.plot(tsteps, qm, \"ro\", label=\"medido\")\n", "plt.plot(tsteps, qs, label=\"simulado\")\n", "plt.xlabel(\"anos\")\n", "plt.ylabel(\"$m^3 std/d$\")\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solução do Item 1: Tempo de Abandono\n", "\n", "Para encontrar o tempo de abandono, vamos isolar $t$ na equação de declíneo:\n", "\n", "$$q = \\frac{q_i}{(1 + n a_i t)^{1/n}}$$\n", "\n", "temos:\n", "\n", "$$t = \\frac{(q_i/q)^n - 1}{n a_i}$$\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def tempo_abandono(qa, qi, ai, n):\n", " t = ((qi/qa)**n - 1) / (ai*n)\n", " return t" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "24.36224982496239" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qa = 5\n", "tempo_abandono(qa, qi_fit, ai_fit, n_fit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Temos que o tempo de abandono é de **24.36 anos**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solução do Item 2: Produção Acumulada\n", "\n", "A produção acumulada até o abandono pode ser calculada integrando-se o a função de declíneo no interavlo de produção $(0, 24.36)$. Para isso vamos usar a função [quad][quad] da [SciPy][scipy-ref].\n", "\n", "[scipy-ref]: http://docs.scipy.org/doc/scipy-0.14.0/reference/index.html\n", "[quad]: http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.integrate.quad.html#scipy.integrate.quad" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Np: 200503.96\n" ] } ], "source": [ "import scipy.integrate\n", "\n", "result, error = scipy.integrate.quad(declinio_hiperb, 0, 24.36, (qi_fit, ai_fit, n_fit))\n", "Np = result * 365.25 # mult por 365.25 (vazão está em dias e tempo em anos)\n", "print(\"Np: %.2f\" % (Np))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Produção acumulada até o tempo de abandono de **200.503 m³std**" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRnh4+DH3v+666yp01aWnp/Paa68xduzYsvM0Pvvsswozl3bv3s2KFSsq/FU/Y8YMHnnkERYtWlTp\nmWn79++nZcuW/Pe//2XgwIEkJibSpEmTsi687777rqzlsWDBAs477zw6dOhQoTX53HPPUVJSwpln\nnsmjjz6q0JBqUemT+yrsbHYRsNP7i96vavrkvqOZNTWOD17qyto18URGBt7VDJctW8b48eN57733\nSEtL48EHH6RHjx4Vtrn44ouZOXMm4Jn7n56eTklJCWeddRazZs3innvuoUmT6puwtnr1as4666yf\ntVB69+5dNnMqLy+Pu+66i9TU1LIztp944omy0Dje82vXruUf//gHcXFx7Nixg169enHzzTeXvdfx\n9j/ob3/7Gx999BELFizgkksuYciQIdx0000MHz6cq6++miFDhgCeaa0PPvggs2fPLtv3gQceADzd\nbbfeemulj9MDDzxAamoqeXl5bNy4kWHDhtGtm+d2Nvfeey9hYWEkJydz++23l83+euSRRyguLiYh\nIYEuXbrw+OOP07t3b3r27KlzNeSIKnty3wmFRiDxV2g4B/cM68I1V8Zw//0Na/39q9vcuXPZtm0b\nGzZsYNy4cbzwwguUlJQwevRof5cmIjWgNs4Il3LM4Jb7VvLE3+uzbVu19tT5xQUXXMDcuXPp378/\nAN9++23ZuICIiEKjGrTrXESX3hn89u7QuHT6V199xdlnn01+fj5Lly6tMBtHROq2SoWGmZ1mZtE1\nVUwwu+ne9Xz8SX3mzMnxdyknZMOGDURFRTF16lQmTJjAv/71L2JjA392mIjUjuOOaZjZI0Bj4Gvg\nFKDAOffHWqitUvw1plHex5MSmP7a2fywuj716gVnI+71118nNzeX3/zmN/4uRURqQU2MaXwK3A/M\nAx4AZlattNA3cEQ2jVrt4I7RwXkJ6h9//JHnn3+edevW+bsUEQlQvrQ0zgROcc69b2a/BxY55xZ5\nn+sErHABMAUrEFoaAJnbjbuuuIC3J5cwYECCv8sRETmmam9pOOdWOufe9y5PANqa2VPeE/vygBFV\nLTYUNWzquOGexdx0s5GTo9vDikhoqWrH+4N4Lhp4D3Bq9ZUTGi66MpeWp25j1O17/F2KiEi1qkpo\nZAKFzrmPnXO3O+cqd4nEOuI3D//IJzNi+eCD0JiGKyICVQuNAcB0M5tqZveaWY/j7lEHNWjouGnc\n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\nD5Vhe3FuRVMaAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tsteps_a = np.linspace(0, 24.3)\n", "qs_a = declinio_hiperb(tsteps_a, qi_fit, ai_fit, n_fit)\n", "\n", "plt.plot(tsteps_a, qs_a)\n", "plt.plot(tsteps, qm, \"ro\")\n", "plt.xlabel(\"anos\")\n", "plt.ylabel(\"$m^3 std/d $\")\n", "plt.title(\"Curva Declinio\")\n", "plt.annotate(r\"$N_p = %.0f m^3std$\" % Np, xy=(0.3, 0.5), xycoords='figure fraction', size=16)\n", "plt.fill_between(tsteps_a, qs_a, 0, facecolor=\"g\", alpha=0.3)\n", "plt.savefig(\"declinio.png\", dpi=300)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Links\n", "- [Matplotlib Gallery](http://matplotlib.org/gallery.html) - exemplos de gráficos gerados pela Matplotlib acompanhado do código-fonte\n", "- [SciPy - Guia de Referência](http://docs.scipy.org/doc/scipy/reference/)\n", "- [Numpy for Matlab users](https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html#general-purpose-equivalents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Round Bônus\n", "\n", "Executar o *Anaconda Command Prompt* e instalar a biblioteca `yahoo_finance` com o seguinte comando:\n", "\n", "```\n", "pip install yahoo_finance\n", "```" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'3.7408'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import yahoo_finance\n", "\n", "yahoo_finance.Currency(\"USDBRL\").get_rate()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "'OIL Brent: U$ 47.24'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brent_share = yahoo_finance.Share(\"BZZ15.NYM\")\n", "brent_price = float(brent_share.get_price())\n", "\"OIL Brent: U$ %.2f\" % (brent_price)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Produção em US$: 59575873.77\n" ] } ], "source": [ "# Imprimindo valor em moeda corrente, agrupand milhar\n", "m3tobrl = 6.28981077\n", "Np_usd = Np * m3tobrl * brent_price\n", "print(\"Produção em US$: %.2f\" % (Np_usd))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'R$ 222.843.555,82'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import locale\n", "\n", "dolar = float(yahoo_finance.Currency(\"USDBRL\").get_rate())\n", "# Aplica as configurações regionais que estão definidas no computador\n", "locale.setlocale(locale.LC_MONETARY, \"Portuguese_Brazil\")\n", "locale.currency(Np_usd * dolar, grouping=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [locale](https://docs.python.org/3.4/library/locale.html)\n", "- [yahoo_finance](https://pypi.python.org/pypi/yahoo-finance/1.2.1)" ] } ], "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }