Escolar Documentos
Profissional Documentos
Cultura Documentos
CAMPUS CASTANHAL
FACULDADE DE MATEMÁTICA
CURSO DE LICENCIATURA EM MATEMÁTICA
Avaliação de Matemática Numérica
Alunos: Andreza Magalhães, Débora Thaíssa, Fabíola Monteira, Fabiane Silva e Marcelo
Victor.
PRIMEIRA AVALIAÇÃO
4.1 Desenvolvendo as equações do sistema dado, temos o seguinte:
8i1 − 4i2 − 2i3 = 10
−4i1 + 6i2 − 2i3 = 0
−2i1 − 2i2 + 10i3 = 4
c)Para resolver esse sistema usando a eliminação de Gauss, vamos usar a seguinte função
em Python:
1 def e l i m G a u s s (A, b ) :
2 import numpy as np
3 m, n = A . s h a p e
4 Aamp = np . c o n c a t e n a t e ( ( A , b ) , a x i s =1)
5 for j in range (n = 1) :
6 for i in r a n g e ( j +1 , n ) :
9 newA = Aamp [ : , : n ]
1
11 x = r e t r o s u b s ( newA , newb )
12 return x
2
3 A = np . a r r a y ( [ [ 8 , =4 , = 2 ] , [ =4 , 6, =2] , [ = 2 , =2 , 10]])
4 b = np . a r r a y ( [ [ 1 0 ] , [0] , [4]])
5
6 Aes = e l i m G a u s s (A, b)
7
8 p r i n t ( Aes )
9
10 # Como saida , temos :
11
12 Aes = [2.8125 2.375 1.5]
3
4 def s o l L U (A , b ) :
5 L, U = decompLU (A)
6 y = s u b s d i r e t a (L , b )
7 x = r e t r o s u b s (U , y )
8 return x
9
10 import numpy as np
11
12 # Matriz das quantidades de maquinas por caminhao ( cada linha representa um
tipo de maquina ) :
13 mq = np . a r r a y ( [ [ 1 , 0, 2, 3, 2] , [1 , 1, 1, 2, 1] , [1 , 2, 1, 1, 2] , [0 , 1, 2,
2, 3] , [2 , 1, 0, 1, 1]])
14
15 # Matriz das quantidades totais de cada tipo de maquina :
17
18
2
19 # Matriz das respostas :
20 cam = s o l L U ( mq , mqtot )
21
22 # Como o numero que queremos deve ser inteiro , usaremos esse loop para o
23
24 for i in r a n g e ( l e n ( cam ) ) :
25 p r i n t ( np . r o u n d ( cam [ i , ] , 0) )
26
27 # Como saida , temos :
Então, x1 = 4, x2 = 6, x3 = 2, x4 = 3 e x5 = 5.
3
15 0 0 0 −9 3 −12 −60
0 15 0 0 −73 21 −49 −570
0 0 15 0 −13 6 11 30 pivô = a55 = 144:
0 0 0 15 74 −18 47 660
0 0 0 0 114 12 42 960
0 0 0 0 112 6 61 930
114 0 0 0 0 30 −66 120
0 114 0
0 0 218 −168 340
0 0 114 0 0 56 120 1060
pivô = a66 = −44
0
0 0 114 0 −196 150 280
0 0 0 0 114 12 42 960
0 0 0 0 0 −44 150 −100
−44 0 0 0 0 0 −14 −20
0 −44 0 0 0 0 −222 60
0
0 −44 0 0 0 −120 −360
0
0 0 −44 0 0 200 −280
0 0 0 0 −44 0 −32 −360
0 0 0 0 0 −44 150 −100
Simplicando as equações::
5 7x7
x1 = −
11 22
−15 111x7
x2 = −
11 22
90 30x7
x3 = −
11 11
70 50x7
x4 = +
11 11
90 8x7
x5 = −
11 11
25 75x7
x6 = +
11 22
x7 = x 7
4
Para resolver o problema, é necessário encontrar valores que satisfaçam as relações acima.
Mas o sistema a ser resolvido é possível e indeterminado, ou seja, admite innitas solu-
ções. Sabendo disso, a resposta ao problema é o conjunto de todos os inteiros e não nulos
x1 , x2 , x3 , x4 , x5 , x6 e x7 que satisfazem as relações encontradas e que não estrapolam os
limites de matéria prima apresentados na questão.
2
3 def e l i m G a u s s (A, b ) :
4 import numpy as np
5 m, n = A . s h a p e
6 Aamp = np . c o n c a t e n a t e ( ( A , b ) , a x i s =1)
7 for j in range (n = 1) :
8 for i in r a n g e ( j +1 , n ) :
11 newA = Aamp [ : , : n ]
14 return x
15
16 A = np . z e r o s ( ( 1 6 , 16) )
17 A[ 0 , :] = [4 , =1 , 0, 0, =1 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
18 A[ 1 , :] = [ =1 , 4, =1 , 0, 0, =1 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
19 A[ 2 , :] = [0 , =1 , 4, =1 ,
=1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]
0, 0,
20 A[ 3 , : ] = [0 , 0 , =1 , 4 , 0 , 0 , 0 , =1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]
21 A[ 4 , : ] = [ = 1 , 0 , 0 , 0 , 4 , =1 , 0 , 0 , =1 , 0 , 0 , 0 , 0 , 0 , 0 , 0]
22 A[ 5 , : ] = [ 0 , =1 , 0 , 0 , =1 , 0 , =1 , 0 , 0 , =1 , 0 , 0 , 0 , 0 , 0 , 0]
23 A[ 6 , : ] = [0 , 0 , =1 , 0 , 0 , =1 , 4 , =1 , 0 , 0 , =1 , 0 , 0 , 0 , 0 , 0]
24 A[ 7 , : ] = [0 , 0 , 0 , =1 , 0 , 0 , =1 , 4 , 0 , 0 , 0 , =1 , 0 , 0 , 0 , 0]
25 A[ 8 , : ] = [0 , 0 , 0 , 0 , =1 , 0 , 0 , 0 , 4 , =1 , 0 , 0 , =1 , 0 , 0 , 0]
26 A[ 9 , : ] = [0 , 0 , 0 , 0 , 0 , =1 , 0 , 0 , =1 , 4 , =1 , 0 , 0 , =1 , 0 , 0]
27 A[ 1 0 , : ] = [0 , 0 , 0 , 0 , 0 , 0 , =1 , 0 , 0 , =1 , 4 , =1 , 0 , 0 , =1 , 0 ]
28 A[ 1 1 , : ] = [0 , 0 , 0 , 0 , 0 , 0 , 0 , = 1 , 0 , 0 , = 1 , 4 , 0 , 0 , 0 , = 1]
5
29 A[ 1 2 , :] = [0 , 0, 0, 0, 0, 0, 0, 0, =1 , 0, 0, 0, 4, =1 , 0, 0]
30 A[ 1 3 , :] = [0 , 0, 0, 0, 0, 0, 0, 0, 0, =1 , 0, 0, =1 , 4, =1 , 0]
31 A[ 1 4 , :] = [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, =1 , 0, 0, =1 , 4, = 1]
32 A[ 1 5 , :] = [0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, =1 , 0, 0, =1 , 4]
33
34 b = np . z e r o s ( ( 1 6 , 1) )
36
37 sol = e l i m g a u s s (A, b)
38
39 # Loop para aproximar os resultados para 3 casas decimais :
41 p r i n t ( np . r o u n d ( s o l [ i ] , 3) )
42
43 # Resultado :
SEGUNDA AVALIAÇÃO
8.9 Usando o método dos mínimos quadrados, vamos obter um polinômio que aproxime os
pontos dados na tabela. Vamos fazer isso usando a função M inQuadp ol, construída em
sala:
1 import numpy as np
2
3 def MinQuad_pol ( xd , yd , g r a u ) :
6 n = l e n ( xd )
10 b = np . z e r o s ( ( g r a u + 1 , 1 ) )
12 for i in r a n g e ( 1 , g r a u +1) :
13 u[: , i ] = np . f l o a t _ p o w e r ( xd , i )
14 b[ i ,0] = np . d o t ( yd , u [ : , i ] )
15 A = np . z e r o s ( ( g r a u +1 , g r a u +1) )
16 for i in r a n g e ( 0 , g r a u +1) :
17 A[ i , i ] = np . d o t ( u [ : , i ] , u [ : , i ] )
18 for j in r a n g e ( i +1 , g r a u +1) :
19 A[ i , j ] = np . d o t ( u [ : , i ] , u [ : , j ] )
20 A[ j , i ] = A[ i , j ]
21 sol = np . l i n a l g . s o l v e ( A , b )
24
25 #c r i a n d o visualizacao grafica :
6
26 xi = xd [ 0 ] = 0.5; xf = xd [ =1] + 0.5
27 x = np . l i n s p a c e ( x i , x f , 1 0 0 )
28 y = p(x)
31 p l t . l e g e n d ( frameon = False )
32 p l t . g r i d ( True )
33 p l t . show ( )
37 p = sym . s y m p i f y ( p )
38 print (p)
39
40 # Agora chamando a function com os dados da tabela da questao :
42
43 lamb = [0.01 , 0.02 , 0.025 , 0.038 , 0.05 , 0.07]
47
48 #s a i d a : =0.1245 x ^2 + 0.02147 x + 0.0002329
a) Pelo método dos mínimos quadrados, temos como aproximação para os pontos o função
do segundo grau ϵ(λ) = −0.1245λ2 + 0.02147λ + 0.0002329
b) O gráco retornado pelo programa foi:
7
Pelo gráco obtido, observamos que o polinômio obtido é uma boa aproximação para os
pontos dados no problema.
10.2 Dada a trajetória do projétil, temos três pares ordenados dados no plano cartesiano: (0,
0), (10, 6) e (20, 4). Vamos usar um programa em python para fazer a interpolação:
1
2 # Essa funcao realiza a interpol . pelo polinomio de Lagrange
3 def I n t e r p _ L a g r a n ( xd , yd , x i t p ) :
4 # Input :
polinomio
8 import numpy as np
12
13 n = l e n ( xd )
15 L = sym . o n e s ( n , 1 )
17 for i in range (0 , n) :
18 for j in range (0 , n) :
19 if j != i :
20 L[ i ] *= (x = xd [ j ] ) / ( xd [ i ] = xd [ j ] )
21 L[ i ] *= yd [ i ]
22 p = L[0]
23 for i in range (1 , n) :
24 p += L [ i ]
25
26 myf = sym . e x p a n d ( p ) #e x p a n d i n d o todas potencias
27
28 f = sym . l a m b d i f y ( x , p , ' numpy ' )
29
30
8
31 #c r i a n d o visualiz . grafica :
33 xt = np . l i n s p a c e ( x i , x f , 1 0 0 )
34 yt = f ( xt )
37 p l t . l e g e n d ( frameon = False )
38 p l t . g r i d ( True )
42 plt . ion
43 p l t . show ( )
45
46 # Vamos entrar com todos os 3 pontos que temos e com uma abscissa que
47
48 x = np . a r r a y ( [ 0 , 10 , 20])
49 y = np . a r r a y ( [ 0 , 6, 4])
50 xp = 5
51
52
53 f , fp = Interp_lagran (x , y, xp )
54
55 print ( f )
56 print ( fp )
57
58 # Saidas :
59 # =x ** 2 / 2 5 + x
60 # 4.0
2
= v02
0, 0081136
v02 ≈ 246, 5
9
v0 ≈ 15, 7
Por m:
−x2
a) O polinômio interpolador encontrado foi + x.
25
b) O ângulo de lançamento é ψ = 45° e a velocidade inical é v0 ≈ 15, 7km/h.
c) A altitude do projétil a 5 metros de distância do lançamento é de 4 metros.
10.8 Vamos usar o mesmo processo da questão anterior, usando a interpolação de Lagrange:
1
2 # Dados da tabela ( velocidade e consumo ) :
5
6 vel1 = 80
7 vel2 = 105
8
9 from InterpQuad import Interp_Lagran as il
10
11 pol , con_1 = i l ( velo , cons , vel1 )
12
13 print ( pol )
14 p r i n t ( con_1 )
15 # Saida 1 = 13.466159122085047
16
17 pol , con_2 = i l ( velo , cons , vel_2 )
18 p r i n t ( con_2 )
19 # Saida 2 = 11.901700960219474
11.2 Vamos usar a primeira regra de simpson combinada para calcular a quadratura que que-
remos. Vamos usar o seguinte código:
1
2 def SimpsonI_comb ( xd , yd , q s= ' F a l s e ' ) :
3 n = l e n ( xd )
4 if (n = 1) % 2 != 0:
6 if n != l e n ( yd ) :
8 h = xd [ 1 ] = xd [ 0 ]
9 # for i in range (2 , n) :
13 s = yd [ 0 ] + yd [ =1]
14 for i in range (1 , n , 2 ) :
15 s += 4 * yd [ i ]
10
18 # quadratura numerica :
19 q = h * s / 3
21 if qs == T r u e :
25 f = sym . s y m p i f y ( myf )
26 I = f l o a t ( sym . i n t e g r a t e ( f , ( x , xd [ 0 ] , xd [ =1]) ) )
27 errel = abs ( ( I =q ) / I )
28 return q, errel
29 else :
30 return q
31
32 # Chamando essa function com os valores da tabela :
33
34 temp = [0 , 5, 10 , 15 , 20 , 25 , 30 , 35 , 40]
36
37 quad = SimpsonI_comb ( temp , vel )
38
39 p r i n t ( quad )
40
41 # Saida : 1575.0
Mas a quadratura é a área sob os pontos indicados. Pensando nisso, podemos aproximar
a forma obtida sob os pontos com um trapézio. Temos a informação da medida de três
lados do trapézio e a área. Observando isso, a distância percorrida aproximada seria a
medida do outro lado resultante, ou seja, aproximadamente 55,3 km.
11.8 Vamos usar a regra do trapézio para encontrar a quadratura. Usaremos mais um programa
Python:
1 def t r a p e z i o ( xd , yd , q s= ' F a l s e ' ) :
2 n = l e n ( xd )
abscissas ! ' )
4 h = xd [ 1 ] = xd [ 0 ]
5 # quadratura numerica :
6 q = h * ( yd [ 0 ] + yd [ 1 ] ) / 2
8 if qs == T r u e :
12 f = sym . s y m p i f y ( myf )
13 I = f l o a t ( sym . i n t e g r a t e ( f , ( x , xd [ 0 ] , xd [ =1]) ) )
14 errel = abs ( ( I =q ) / I )
15 return q, errel
16 else :
17 return q
18
19 # vamos admitir a velocidade inicial igual a zero .
11
21
22 temp0= [0 , 2]
23 veloc0 = [0 , 16.4]
25 p r i n t ( quad0 )
26 # Saida 1: 16.4
27
28
29 temp1 = [2 , 10]
32 p r i n t ( quad1 )
33 # Saida 2: 244.8
Como o paraquedista saltou de 3000m, aos 2s a sua altura seria 3000 − 16, 4 = 2983, 6m.
Como dos 2s aos 10s o paraquedista se deslocou 244, 8m, a sua altura nesse instante seria
2983, 6 − 244, 8 = 2738, 8m.
12