Vetores em Python - · PDF fileVetores em Python Disciplina "Introdução à...

download Vetores em Python - · PDF fileVetores em Python Disciplina "Introdução à Computação em Física" (ICF) da UFES/Alegre Curso de Licenciatura em Física - Turma 2012/2 Autoria :

If you can't read please download the document

Transcript of Vetores em Python - · PDF fileVetores em Python Disciplina "Introdução à...

  • Vetores em PythonDisciplina "Introduo Computao em Fsica" (ICF) da UFES/Alegre

    Curso de Licenciatura em Fsica - Turma 2012/2

    Autoria : Prof. Roberto Colistete Jr., em 04/2013.

    Listas em Python puro no so vetores matemticos :

    Listas so coleo de objetos em Python :

    In [1]:

    In [2]:

    In [3]:

    In [4]:

    In [5]:

    In [6]:

    "append" na verdade um mtodo do objeto vetor1 que da classe list. Um pouquinho de OOP (Object OrientedProgramming)...

    In [7]:

    In [8]:

    vetor1 = [1,2,3]

    vetor1[0]

    Out[2]: 1

    vetor1[1]

    Out[3]: 2

    vetor1[0:2]

    Out[4]: [1, 2]

    vetor1[-1]

    Out[5]: 3

    len(vetor1)

    Out[6]: 3

    vetor1.append("ola")

    vetor1

    Out[8]: [1, 2, 3, 'ola']

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    1 de 6 19-04-2013 00:51

  • "del" permite apagar elementos de uma lista :

    In [9]:

    In [10]:

    Listas so usadas pela estrutura de repetio "for" :

    In [11]:

    Mas listas no se comportam como vetores matemticos :

    In [12]:

    In [13]:

    In [14]:

    Usando NumPy para vetores numricos :

    Com NumPy temos "array" que permite definir vetores (e matrizes, etc) matemticos, incluindo produto escalar, etc. Alimitao que s para valores numricos.

    In [15]:

    A funo "array" do NumPy define um vetor numrico :

    del vetor1[-1]

    vetor1

    Out[10]: [1, 2, 3]

    for i in vetor1: print 2**i

    248

    1 + vetor1

    ---------------------------------------------------------------------------TypeError Traceback (most recent call last) in ()----> 1 1 + vetor1

    TypeError: unsupported operand type(s) for +: 'int' and 'list'

    vetor1 + vetor1

    Out[13]: [1, 2, 3, 1, 2, 3]

    vetor1 * 3

    Out[14]: [1, 2, 3, 1, 2, 3, 1, 2, 3]

    import numpy as np

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    2 de 6 19-04-2013 00:51

  • In [16]:

    In [17]:

    In [18]:

    In [19]:

    In [20]:

    In [21]:

    In [22]:

    In [23]:

    In [24]:

    In [25]:

    Produto escalar (interno) via funo "dot" do NumPy :

    In [26]:

    In [27]:

    vetor2 = np.array([1, 2, 3])

    vetor2

    Out[17]: array([1, 2, 3])

    vetor2[0]

    Out[18]: 1

    1 + vetor2

    Out[19]: array([2, 3, 4])

    vetor2

    Out[20]: array([1, 2, 3])

    vetor2 + vetor2

    Out[21]: array([2, 4, 6])

    vetor2 * 3

    Out[22]: array([3, 6, 9])

    vetor2**2

    Out[23]: array([1, 4, 9])

    np.sin(vetor2)

    Out[24]: array([ 0.84147098, 0.90929743, 0.14112001])

    vetor3 = np.array([4, 5, 6])

    np.dot(vetor2, vetor3)

    Out[26]: 32

    np.sqrt(np.dot(vetor2, vetor2))

    Out[27]: 3.7416573867739413

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    3 de 6 19-04-2013 00:51

  • In [28]:

    O produto via "*" no produto escalar, e sim o produto de termo a termo de cada vetor :

    In [29]:

    Produto vetorial via funo "cross" do NumPy :

    In [30]:

    In [31]:

    Usando SymPy (Matrix) para vetores com termos simblicos :

    In [32]:

    Funo "Matrix" define um vetor (que um caso especfico de uma matriz, aqui um vetor coluna 3x1) :

    In [33]:

    In [34]:

    "dot" um mtodo do vetor para calcular o produto escalar :

    In [35]:

    "cross" um mtodo do vetor para calcular o produto vetorial :

    np.linalg.norm(vetor2)

    Out[28]: 3.7416573867739413

    vetor2*vetor3

    Out[29]: array([ 4, 10, 18])

    np.cross(vetor2, vetor3)

    Out[30]: array([-3, 6, -3])

    np.cross(vetor2, vetor2)

    Out[31]: array([0, 0, 0])

    from sympy import *

    vetor4 = Matrix(3,1,[1,2,3])

    vetor4

    Out[34]: [1][2][3]

    vetor4.dot(vetor4)

    Out[35]: 14

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    4 de 6 19-04-2013 00:51

  • In [36]:

    Vetores com elementos simblicos :

    In [37]:

    Vetor posio de um movimento circular uniforme em 2D :

    In [38]:

    In [39]:

    In [40]:

    In [41]:

    Vetor velocidade a derivada do vetor posio em relao ao tempo t, onde "diff" um mtodo do vetor :

    In [42]:

    In [43]:

    Vetor posio r ortogonal ao vetor velocidade v :

    In [44]:

    Vetor acelerao a derivada do vetor velocidade em relao ao tempo t :

    vetor4.cross(vetor4)

    Out[36]: [0, 0, 0]

    t, R, omega = symbols("t, R, omega")

    r = Matrix(2,1,[R*cos(omega*t),R*sin(omega*t)])

    r

    Out[39]: [R*cos(omega*t)][R*sin(omega*t)]

    r.dot(r)

    Out[40]: R**2*sin(omega*t)**2 + R**2*cos(omega*t)**2

    simplify(r.dot(r))

    Out[41]: R**2

    v = r.diff(t); v

    Out[42]: [-R*omega*sin(omega*t)][ R*omega*cos(omega*t)]

    simplify(v.dot(v))

    Out[43]: R**2*omega**2

    r.dot(v)

    Out[44]: 0

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    5 de 6 19-04-2013 00:51

  • In [45]:

    In [46]:

    Ou seja, :

    In [47]:

    Vetor velocidade v ortogonal ao vetor acelerao a :

    In [48]:

    a = v.diff(t); a

    Out[45]: [-R*omega**2*cos(omega*t)][-R*omega**2*sin(omega*t)]

    simplify(a.dot(a))

    Out[46]: R**2*omega**4

    a = /Rv2

    simplify(v.dot(v))/R

    Out[47]: R*omega**2

    v.dot(a)

    Out[48]: 0

    IPython Notebook http://127.0.0.1:8888/320ef90b-f34f-4a03-a174-382e132ecd51/...

    6 de 6 19-04-2013 00:51