{"nbformat":4,"nbformat_minor":0,"metadata":{"anaconda-cloud":{},"colab":{"name":"mac0209-USPSimulation_1D-exercicios-vazia.ipynb","provenance":[]},"kernelspec":{"display_name":"Python [default]","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.5.2"},"toc":{"base_numbering":1,"nav_menu":{},"number_sections":true,"sideBar":true,"skip_h1_title":false,"title_cell":"Table of Contents","title_sidebar":"Contents","toc_cell":false,"toc_position":{},"toc_section_display":true,"toc_window_display":false}},"cells":[{"cell_type":"markdown","metadata":{"colab_type":"text","id":"P29UZL3CS_Qj"},"source":[" MAC0209 - Modelagem e Simulação \n","\n","Roberto M. Cesar Jr. (IME-USP)\n","\n","Roberto Hirata Jr. (IME-USP)\n","***\n"," Simulação de Drone - Lei horária - 1D\n","***"]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"YlMqIgh8S_Ql"},"source":["# Preâmbulo"]},{"cell_type":"code","metadata":{"colab_type":"code","id":"E_Mq0N_JGAYB","colab":{}},"source":["import matplotlib.pyplot as plt\n","from matplotlib import collections as mc\n","import os\n","import numpy as np\n","from matplotlib import animation, rc\n","from IPython.display import HTML\n","import random\n","import requests\n","import os\n","from io import BytesIO\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"zGrsI5boS_Qp","colab":{}},"source":["def pontoInicial():\n"," return([717, 360])\n","\n","def pontoFinal():\n"," return([1557, 801])\n","\n","def loadImage():\n"," carregaCloud = True\n"," if (carregaCloud):\n"," #versao colab online\n"," imgurl='https://www.ime.usp.br/~cesar/courses/mac0209/usp-lg.png'\n"," img = plt.imread(BytesIO(requests.get(imgurl).content))\n"," else:\n"," #versao jupyter local\n"," img = plt.imread('usp-lg.png')\n"," \n"," return(img)\n","\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"Qd7cZbzYGAYJ","outputId":"0bb4b25a-71c6-47e3-caab-d6409d4cd0db","colab":{"base_uri":"https://localhost:8080/","height":130},"executionInfo":{"status":"error","timestamp":1585586997875,"user_tz":180,"elapsed":1096,"user":{"displayName":"Roberto M Cesar-Jr","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhGz-__eofJQcn1KDxeHHo4TBBV_Y3cg_tX79E4_g=s64","userId":"07799089339871026779"}}},"source":["def mostraTrajeto():\n"],"execution_count":2,"outputs":[{"output_type":"error","ename":"SyntaxError","evalue":"ignored","traceback":["\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m def mostraTrajeto():\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unexpected EOF while parsing\n"]}]},{"cell_type":"code","metadata":{"colab_type":"code","id":"k-6bkgKES_Qv","colab":{}},"source":["def simulaTrajeto(x,y, titleStr):\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"IEYm2pNbS_Qx","colab":{}},"source":["# Animacao\n","\n","# As animacoes requerem as variaveis globais xAnim, yAnim\n","# Por exemplo, xAnim = xp, yAnim = y\n","# O codigo das celulas de animacao deve ser re-copiado para\n","# cada animacao separadamente.\n","\n","# initialization function: plot the background of each frame\n","def initAnimate():\n"," line.set_data([], [])\n"," return (line,)\n","\n","# animation function. This is called sequentially \n","def animate(i):\n"," ind0 = i%len(xAnim)\n"," ind1 = (i+1)%len(xAnim)\n"," ind1 = ind0\n"," #ax.plot(xs,ys,'r*')\n"," line.set_data([xAnim[ind0], xAnim[ind1]] , [yAnim[ind0], yAnim[ind1]])\n"," return (line,)\n","\n","def createAnimPlot(titleStr):\n"," img = loadImage()\n"," plotSizeK=1\n","\n"," figAnim, axAnim = plt.subplots(1, 1, figsize = (plotSizeK*12, plotSizeK*6))\n"," axAnim.imshow(img)\n","\n"," plt.title(titleStr)\n"," \n"," line, = axAnim.plot([], [], 'r-*', lw=5)\n"," nFrames=len(xAnim)-1\n"," \n"," return(figAnim, axAnim, nFrames, line)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"Ls_46UDYS_Qz"},"source":["# Movimento Retilíneo Uniforme "]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"MTSS38-AS_Q0"},"source":["Lei horária: $x(t) = x0 + kt $\n","\n","Modelo por equação diferencial:\n","\n","$\\frac{dx}{dt} = k$"]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"oWrYXRXCS_Q1"},"source":["## Solução analítica"]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"hwuff4bmS_Q1"},"source":["Lei horária: $x(t) = x0 + kt $"]},{"cell_type":"code","metadata":{"colab_type":"code","id":"yKzeEtCuS_Q2","colab":{}},"source":["def proximoXAnalitico(t,k,x0):\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"rKVFhQV2S_Q6","colab":{}},"source":["# Simulacao\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"0kNrmIfMS_Q8","colab":{}},"source":["\n"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"RrHum22fS_RF"},"source":["## Solução Numérica por Euler"]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"gJWyI2GaS_RG"},"source":["Modelo por equação diferencial:\n","\n","$\\frac{dx}{dt} = k$\n","\n","Solução de Euler:\n","\n","$x(t) = x(t-1) + k \\: dt$"]},{"cell_type":"code","metadata":{"colab_type":"code","id":"ANKAWPewS_RH","colab":{}},"source":["def proximoXEuler(dt,k,x0):\n"," return(x0 + k*dt) "],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"kMgkKJ4JS_RK","colab":{}},"source":["# Simulacao\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"colab_type":"code","id":"xBXe9HdaS_RM","colab":{}},"source":["# Animacao: Euler\n","\n"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"Xg76dPOWS_RT"},"source":["## Exercícios"]},{"cell_type":"markdown","metadata":{"colab_type":"text","id":"_RBinNgKS_RU"},"source":["Escreva um programa em Python que sobreponha as trajetórias dos Drones simulados pela solução analítica e pela solução numérica por Euler na animação, de maneira a comparar os resultados."]},{"cell_type":"code","metadata":{"colab_type":"code","id":"ZoooHoI4S_RU","colab":{}},"source":["Escreva um programa em Python que realize a animação das partículas com os dados do experimento da travessia realizado nas primeiras aulas (os dados estão disponíveis no JN da travessia)."],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"aBhdiU6pkns2","colab_type":"code","colab":{}},"source":[""],"execution_count":0,"outputs":[]}]}