MESTRADO EM MACROECONOMIA e FINANÇAS
Disciplina de Computação
Aula 04
Prof. Dr. Marco Antonio Leonel Caetano
1
Guia de Estudo para Aula 04
•Aplicação de Produto Escalar
- Interpretação do produto escalar
- utilização para ajuste de funções.
- Reforçar a noção de programar com “for”
Aplicação de Matrizes em Tabela
- Determinação do método dos múltiplos quadrados
Exercícios
- Comando FOR
- Produto escalar
- Método dos Mínimos Quadrados
- Gráficos
Objetivos da Aula
- Compreender vetores em matlab.
- Ligar a idéia do For com a notação do Matlab para vetores
- Aprender a usar matrizes em matlab
- Método dos Mínimos Quadrados.
2
Transposta da Matriz no Comando FOR
•Dada a matriz A (i,j) a transposta é AT(j,i)
•Linhas viram colunas.
•Colunas viram linhas.
Exercício
Fazer um programa em Matlab usando FOR onde o usuário entra com uma
matriz quadrada n x n e o programa devolve a matriz transposta.
3
O Programa
4
Exercício
Fazer um programa usando comando FOR do Matlab para transformar
uma matriz linha em matriz coluna.
MATRIZ LINHA
A = (a11
a12 L a1n )
MATRIZ COLUNA
⎛ a11 ⎞
⎜ ⎟
⎜ a21 ⎟
A=⎜ ⎟
M
⎜ ⎟
⎜a ⎟
⎝ n1 ⎠
5
A(1,j)
B(j,1)
6
Resolvendo Sistema Linear
Observar o seguinte sistema linear:
⎧5 x1 + 2 x2 = 4
⎨
⎩ 2 x1 − x2 = 1
Para resolver seguem-se duas maneiras diferentes:
(1) Isolar x1 da primeira equação e substituir na segunda.
(2) Transformar o sistema em matrizes e vetores.
7
⎧5 x1 + 2 x2 = 4
⎨
⎩ 2 x1 − x2 = 1
Primeira Resolução
(a) Isolando x1 na primeira equação:
x1 =
4 − 2 x2
5
(b) Substituindo na segunda equação:
⎛ 4 − 2 x2 ⎞
2⎜
⎟ − x2 = 1
⎝ 5 ⎠
⇒
8 − 4 x2 − 5 x2 = 5
⇒
− 9 x 2 = −3
⇒
x2 =
1
3
(c) Substituindo x2 em x1 isolado em (a):
Solução:
x1 =
2
3
x2 =
x1 =
2
3
1
3
8
⎧5 x1 + 2 x2 = 4
⎨
⎩ 2 x1 − x2 = 1
Segunda Resolução
(a) Transformar o sistema em representação matricial:
⎛ 5 2 ⎞⎛ x1 ⎞ ⎛ 4 ⎞
⎜⎜
⎟⎟⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟
2
−
1
⎝
⎠⎝ x2 ⎠ ⎝ 1 ⎠
A
B
(b) Resolve-se agora o sistema :
AX = B
(c) A solução deve envolver a inversa da matriz A, ou seja, A-1
A−1 AX = A−1 B
(d) Como A-1.A é matriz identidade a solução será: X = A-1B
(e) No matlab basta :
x = inv(A)*B
9
No Matlab
B tem que ser transposto! Ou B = [ 4 ; 1]
10
Problema com dimensão de matrizes
Resolver sistema linear com mesmo número de linhas e colunas é
fácil usando matlab. Mas quando se tem MAIS equação que incógnita
a inversa da matriz não é possível.
⎧ 2 x1 + x2 = 1
⎪
⎨3 x1 + 2 x2 = 2
⎪ x +x =3
⎩ 1 2
3 equações
2 incógnitas (x1,x2)
????
11
Método dos Mínimos Quadrados
A solução para o problema anterior é encontrar o vetor x mais próximo
possível tal que o sistema AX = B seja o mais verdadeiro possível!
Deve-se encontrar o vetor x cujo erro do sistema seja o menor possível
ao quadrado. Por isso o método se chama MÍNIMOS QUADRADOS.
Exemplo:
Reta que mais se
aproxima dos
pontos amostrados
Y
reta de regressão linear
b=tangente(angulo)
angulo
a
X
Os resíduos dessa
diferença são os
menores possíveis
quando elevados ao
quadrado.
12
A Estimativa do Método dos Mínimos Quadrados (MMQ)
Seja
r
Ax = B
⇒
r
AT Ax = AT B
⇒
(A A) .(A A).xr = (A A)
T
−1
T
T
−1
. AT B
identidade
Logo, para encontrar o vetor x mais próximo possível da solução:
(
)
−1 T
r
T
x= A A A B
13
Aplicação dos MMQ à preço de ações
Imaginar que duas ações foram acompanhadas por 3 dias e tiveram
seus valores de fechamento relacionados na tabela a seguir:
Ação 1
Ação 2
0,10
13
0,18
22
0,28
36
Suponha que exista a seguinte relação entre as ações:
acão1 × k = acão2
Qual o valor de k?
14
Solução via MMQ
0,10k = 13
Sistema com 3 equações e 1 incógnita
0,18k = 22
0,28k = 36
Neste caso as matrizes A e B serão:
⎛ 0,10 ⎞
⎟
⎜
A = ⎜ 0,18 ⎟
⎜ 0,28 ⎟
⎠
⎝
⎛ 13 ⎞
⎜ ⎟
B = ⎜ 22 ⎟
⎜ 36 ⎟
⎝ ⎠
Então, lembrando que o x nesse problema é o valor de k e:
(
)
−1 T
r
T
x= A A A B
Qual a solução?
15
Solução
(a)
⎛ 0,1 ⎞
⎟
⎜
AT A = (0,1 0,18 0,28)⎜ 0,18 ⎟ = 0,1208
⎜ 0,28 ⎟
⎠
⎝
(b)
⎛ 0,1 ⎞
⎜
⎟
T
A B = (0,1 0,18 0,28)⎜ 0,18 ⎟ = 15,34
⎜ 0,28 ⎟
⎝
⎠
Assim,
1
k=
15,34 ≈ 127
0,1208
16
A Solução Numérica
(
)
−1 T
r
T
x= A A A B
17
Exercício
Dados N pontos pelo usuário, fazer um programa usando comando
FOR para alimentar um vetor x do tipo a(i) = i e um vetor b(i) = i2.
Supondo que: a.x = b
Encontrar o valor de x pelo MMQ
100
90
Exemplo: n=10
80
70
a
b
1
1
60
b = i2
50
2
4
3
9
4
16
:::::::
:::::::
40
30
20
a=i
10
0
1
2
3
4
5
6
7
8
9
10
18
Solução
Matrizes “Coluna”
MÉTODO DOS MÍNIMOS QUADRADOS
19
Exercício
Fazer um programa usando FOR para pedir ao usuário as matrizes
A de ordem n x m e B de ordem n x 1 para resolver um sistema linear
genérico pelo MMQ.
Exemplo: n = 3 e m = 2
⎧ x1 + x2 = 3
⎪
⎨− 2 x1 + 3x2 = 1
⎪ 2x − x = 2
⎩ 1 2
Então:
1⎞
⎛ 1
⎟
⎜
A = ⎜− 2 3 ⎟
⎜ 2 − 1⎟
⎠
⎝
⎛ 3⎞
⎜ ⎟
B = ⎜1⎟
⎜ 2⎟
⎝ ⎠
20
Solução
Solução do Exemplo
21
Ajuste de Função
Dada uma tabela de dados
⎡ X : x1
⎢Y : y
1
⎣
x2
y2
x3 ⎤
y3 ⎥⎦
Deseja-se encontrar a melhor função linear que ajuste y aos valores de x:
y = c0 + c1 x
Observando que os dados são inseridos na função da seguinte forma:
y (i ) = c0 + c1 x(i )
O sistema a ser resolvido é:
⎛1 x1 ⎞
⎛ y1 ⎞
⎟
⎜
⎜ ⎟
⎜1 x2 ⎟ ⎛ c0 ⎞ ⎜ y2 ⎟
⎜ M M ⎟.⎜⎜ c ⎟⎟ = ⎜ M ⎟
⎟⎝ 1 ⎠ ⎜ ⎟
⎜
⎜1 x ⎟
⎜y ⎟
n⎠
⎝
⎝ n⎠
A
X
B
22
Exercício
Fazer um programa para entrar com n valores de x e de y e no final
o programa deve ajustar a função linear pelo método dos mínimos
quadrados. Use como exemplo a tabela a seguir:
X
0
3
6
Y
1
4
5
Solução
23
Exercício
Modificar o programa anterior para fazer o gráfico dos pontos da
Tabela e dos pontos da reta ajustada y(i) = c0 + c1* x(i)
24
Solução
5.5
5
4.5
pontos da tabela
4
3.5
3
RETA AJUSTADA
2.5
2
1.5
1
0
1
2
3
4
5
6
25
Questão
Como seria a formulação matemática e a programação se fosse desejado
ao invés de ajuste linear o ajuste quadrático do tipo e use a tabela:
y = c0 + c1 x
2
X
0
3
6
Y
1
10
40
O sistema a ser resolvido é:
⎛1 x12 ⎞
⎛ y1 ⎞
⎜
⎟
⎜ ⎟
2
⎜1 x2 ⎟ ⎛ c0 ⎞ ⎜ y2 ⎟
⎜ M M ⎟.⎜⎜ c ⎟⎟ = ⎜ M ⎟
⎜
⎟⎝ 1 ⎠ ⎜ ⎟
⎜y ⎟
⎜1 x 2 ⎟
⎝ n⎠
n ⎠
⎝
X
A
B
26
Programa
Aqui se lê o valor de x
Aqui se eleva ao quadrado
Aqui é a equação
27
PROBLEMA DESAFIO: Como melhorar esse gráfico para uma
parábola?
40
35
30
ISSO É UMA PARÁBOLA?
25
20
15
10
5
0
0
1
2
3
4
5
6
28
Dica
•
O gráfico deve ter mais pontos no eixo x.
•
Os pontos devem ter espaçamentos em números reais.
Ex: de 0,5 em 0,5; de 0,1 em 0,1;
•
3. Com o contador sendo um número real, um NOVO
contador para o índice do vetor deve ser criado. Tem que
ser número inteiro.
29
Refinamento do plot
Novo vetor para o eixo
Novo índice (deve ser
INTEIRO)
30
40
35
30
25
20
15
10
5
0
0
1
2
3
4
5
6
31
Download

AULA 4