Escolar Documentos
Profissional Documentos
Cultura Documentos
Cálculo Numérico
Atividade Prática 1
“Numerical analysis is the area of mathematics and
computer science that creates, analyzes, and
implements algorithms for solving numerically the
problems of continuous mathematics.” (Atkinson)
Sobre o Python
https://www.python.org
Sobre o Python
Expressões booleanas
Assumem valor True ou False. Por exemplo,
>>> 3 >= 2
True
>>> 1 != (0+1)
False
>>>
Tipos de dados
O tipo de um dado é definido de modo dinâmico
• Tipos compostos:
str , unicode, list , tuple, bytearray, buffer , xrange,
set, frozenset, dict
• Outros tipos: file , array, etc
• Tipos compostos:
str , unicode, list , tuple, bytearray, buffer , xrange,
set, frozenset, dict
• Outros tipos: file , array, etc
>>> d e f m a i o r ( a , b ) :
... if a > b:
... return a
... else :
... return b
...
>>> m a i o r ( 3 , 2 )
3
>>> m a i o r ( −1 , −3)
−1
>>>
Funções
Uma função é um subprograma, ou seja, um subconjunto de
definições e comandos de um programa
sum ( ) p r i n t ( ) l e n ( ) range ( ) f l o a t ( )
...
Módulos
Um módulo é um arquivo contendo definições e comandos em
Python, o qual pode ser importado para outros módulos
# a r i t m e t i c a . py
>>>
ndarray
Arranjos numéricos multi-dimensionais podem ser criados a
partir de arranjos, listas e tuplas
>>> x = np . a r r a y ( [ [ 1 , 3 . 5 ] , [ − 1 , 0 ] , ( 1 + 1 j , 3 . ) ] )
>>> x
a r r a y ( [ [ 1.0+0. j , 3.5+0. j ] ,
[ −1.0+0. j , 0 . 0 + 0 . j ] ,
[ 1.0+1. j , 3.0+0. j ] ] )
>>>
ndarray
Há também funções de construção especiais
>>> np . a r a n g e ( 1 0 )
array ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9])
>>>
>>> np . z e r o s ( ( 2 , 3 ) )
array ( [ [ 0. , 0. , 0.] ,
[ 0. , 0. , 0.]])
>>>
>>> np . l i n s p a c e ( 1 . , 4 . , 6 )
array ([ 1. , 1.6 , 2.2 , 2.8 , 3.4 , 4. ])
>>>
ndarray
ndarrays são mais do que arranjos
>>> a = np . a r a n g e ( 1 5 ) . r e s h a p e ( 3 , 5 )
>>> a
array ( [ [ 0 , 1 , 2 , 3 , 4] ,
[ 5 , 6 , 7 , 8 , 9] ,
[ 1 0 , 11 , 12 , 13 , 1 4 ] ] )
>>> a . s h a p e
(3 , 5)
>>> a . ndim
2
>>> a . d t y p e . name
’ int64 ’
>>> a . i t e m s i z e
8
>>> a . s i z e
15
>>> type ( a )
<type ’ numpy . n d a r r a y ’>
ndarray
As operações +, -, * são elemento a elemento
>>> import s c i p y a s sp
>>> sp . e
2.718281828459045
>>> sp . p i
3.141592653589793
>>> sp . i n f
inf
>>> sp . nan
nan
>>>
Matplotlib
import numpy a s np
import m a t p l o t l i b . p y p l o t a s p l t
x = np . l i n s p a c e ( 0 . 0 , 5 . 0 , 1 0 0 )
y = np . c o s ( 2 ∗ np . p i ∗ x ) ∗ np . exp (−x )
plt . plot (x , y , ’k ’ )
plt . t i t l e ( ’ Decaimento e x p o n e n c i a l a m o r t e c i d o ’ )
plt . t e x t ( 2 , 0 . 6 5 , r ’ $ \ c o s ( 2 \ p i t ) \ , \ exp (− t ) $ ’ )
plt . x l a b e l ( ’ tempo ( s ) ’ )
plt . y l a b e l ( ’ v o l t a g e m (mV) ’ )
p l t . show ( )
Cancelamento catastrófico
Considere f (x) = x2 .
Sabemos que f 0 (3) = 6.
Mas observe o que acontece quando usamos a aproximação
linear para f 0 :
0 f (3 + h) − f (3)
f (3) ≈
h
(3 + h)2 − 32
=
h
Cancelamento catastrófico
Considere f (x) = x2 .
Sabemos que f 0 (3) = 6.
Mas observe o que acontece quando usamos a aproximação
linear para f 0 :
0 f (3 + h) − f (3)
f (3) ≈
h
(3 + h)2 − 32
=
h
Veja no python o que acontece com h = 10−1 a 10−20 .
Cancelamento catastrófico
Considere f (x) = x2 .
Sabemos que f 0 (3) = 6.
Mas observe o que acontece quando usamos a aproximação
linear para f 0 :
0 f (3 + h) − f (3)
f (3) ≈
h
(3 + h)2 − 32
=
h
Veja no python o que acontece com h = 10−1 a 10−20 .
2 100.000.000
π X 1
≈
6 k2
k=1
O Problema de Basileia
Euler concluiu em 1735 que:
∞
X 1 π2
2
=
k 6
k=1
2 100.000.000
π X 1
≈
6 k2
k=1
r
q
p
Atividade Prática 1
Dados três pontos p = (px , py ), q = (qx , qy ) e r = (rx , ry ) no
plano, a posição relativa de r com relação à reta L gerada por
p e q pode ser:
• à esquerda
• sobre a reta
• à direita
1 px py
orient(p, q, r) = det 1 qx qy
1 rx ry
= (qx − px )(ry − py ) − (qy − py )(rx − px )
Atividade Prática 1
Dados três pontos p = (px , py ), q = (qx , qy ) e r = (rx , ry ) no
plano, a posição relativa de r com relação à reta L gerada por
p e q pode ser:
• à esquerda
• sobre a reta
• à direita
1 px py
orient(p, q, r) = det 1 qx qy
1 rx ry
= (qx − px )(ry − py ) − (qy − py )(rx − px )
> 0 ⇒ r à esquerda de L
= 0 ⇒ r sobre L
< 0 ⇒ r à direita de L
Atividade Prática 1
p
Atividade Prática 1
r
vizinhança de p
p
Atividade Prática 1
r
vizinhança de p
orient(p, q, r) = 0?
p
Atividade Prática 1
r
vizinhança de p
0
orient(p , q, r) < 0?
p0
Atividade Prática 1
r
vizinhança de p
0
orient(p , q, r) > 0?
p0
Atividade Prática 1
Sejam ux = uy = 2−53 . Definimos
p0 = (px + aux , py + buy ) ,
import m a t p l o t l i b . p y p l o t a s p l t
import m a t p l o t l i b . p a t c h e s a s p a t c h e s
p l t . show ( )