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