Vetores em Python - · PDF fileVetores em Python Disciplina "Introdução à...
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