Search This Blog

Friday, April 6, 2018

Aula 8 de Métodos Computacionais em Economia (2018) - Força Bruta II - Busca Exaustiva

Na nossa oitava aula de métodos computacionais discutimos vários problemas clássicos usando o método de busca exaustiva. Nessa aula, vimos nosso primeiro problema com sabor de teoria econômico - o chamado problema Marriage-Matching. A solução apresentada foi uma baseada em busca exaustiva. Obviamente, nas próximas aulas iremos aprender estratégias que produzam algoritmos menos custosos. Esses são os slides usados em sala.


Abaixo temos os exemplos apresentados em sala de aula:

Existem bibliotecas prontas em python para gerar permutações e combinações?

Como implementar uma solução computacional para o problema do caixeiro viajante?

Como implementar uma solução computacional para o problema da mochila?

Como implementar uma solução computacional para o problema do casamento (marriage-matching)?

Referências Adicionais para essa aula:

Introduction to the Design and Analysis of Algorithms - Anany Levitin [Seção 3.4]

Referências Complementares:

In Pursuit of the Traveling Salesman: Mathematics at the Limits of Computation -
William J. Cook

The Art of Computer Programming, Volume 4A: Combinatorial Algorithms - Donald E. Knuth

Sunday, April 1, 2018

Aula 7 de Métodos Computacionais em Economia (2018) - Força Bruta

Na nossa sétima aula de métodos computacionais discutimos vários problemas clássicos usando o método de força bruta (usando a definição do problema). Obviamente, nas próximas aulas iremos aprender estratégias que produzam algoritmos menos custosos. Esses são os slides usados em sala.


Abaixo temos os exemplos apresentados em sala de aula:

Algoritmos de ordenação com complexidade quadrática

Cálculo de máximo e mínimo de uma sequência

Busca linear em uma lista

Cálculo de determinantes usando cofatores

Produto de matrizes em Python

Par mais próximo em python

Substring matching

Fecho convexo

Referências Adicionais para essa aula:

Introduction to the Design and Analysis of Algorithms - Anany Levitin [Seções 3.1, 3.2 e 3.3]

Referências Complementares:

Computational Geometry: Algorithms and Applications - Mark de Berg and Otfried Cheong

Soluções de exercícios

Tetrominoes [Questão 2]

Josephus [Questão 8]


Locomoção de robôs [Questão 9 (f)]


Aula 6 de Métodos Computacionais em Economia (2018) - Filas e Pilhas

Na nossa sexta aula de métodos computacionais discutimos duas coleções importantes de dados: pilhas e filas. Esses são os slides usados em sala.

Abaixo temos os exemplos apresentados em sala de aula:

Como implementar uma pilha em python?

Como implementar uma fila em python?

Como python aloca memória dinamicamente para uma lista?


Referências Adicionais para essa aula:

Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein [Seções 10.1, 17.2 and 17.4]

Data Structures and Algorithms in Python - Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser [Seções 5.3, 6.1, 6.2]

Fundamentals of Python: Data Structures - Kenneth Lambert [Capítulos 7 e 8]

Data Structures and Algorithms Using Python - Rance D. Necaise [Capítulos 7 e 8]

Solução da série de exercícios

Você pode dar um exemplo de um algoritmo que verifica se um número é um palíndromo usando pilha?

Como usar uma pilha para gerar todas as permutações de um conjunto?

Algoritmo não recursivo para gerar todos os subconjuntos de um dado conjunto

Chamadas recursivas da torre de Hanoii

Thursday, March 22, 2018

Aula 5 de Métodos Computacionais em Economia (2018) - Complexidade computacional



Na nossa quinta aula de métodos computacionais discutimos Complexidade Computacional. Esses são os slides usados em sala.

Abaixo temos os exemplos apresentados em sala de aula:

Medição empírica da complexidade computacional

Referências Adicionais para essa aula:

Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein [Capítulo 3]

Introduction to the Design and Analysis of Algorithms - Anany Levitin [Capítulo 2]

Soluções da série de exercícios:

Como calcular a complexidade computacional das implementações recursivas da série de fibonacci?

Qual a complexidade computacional de um algoritmo recursivo que satisfaz a relação de recorrência?

Qual a complexidade computacional dessas relações de recorrência de acordo com o Teorema Mestre (master theorem)?

Wednesday, March 21, 2018

Aula 4 de Métodos Computacionais em Economia (2018) - Programação Orientada a Objeto

Na nossa quarta aula de métodos computacionais discutimos Noções de Programação Orientada a Objeto. Esses são os slides usados em sala.


Abaixo temos os exemplos apresentados em sala de aula:

Exemplo de Classes

Exemplo de encapsulamento

Exemplo de sobrecarga de operadores

Exemplo de polimorfismo

Exemplos de iteradores

Exemplos de geradores

Exemplo de herança

Exemplo de classe abstrata

Referências Adicionais para essa aula:

1. Usuários de Python podem ter interesse em olhar:

Think Python - Allen Downey

2. Usuários de C++ podem ter interesse em olhar:

Think C++

3. Usuários de Java podem ter interesse em olhar:

Intro to Java Programming

Soluções de exercícios

Exercício 5 (a):
M sets


Exercício 5 (b):
Julia sets

Exercício 6:
Alocação de carteiras



Saturday, March 17, 2018

Métodos Quantitativos para o Mestrado Cofen

Esse material deve servir de apoio ao curso de Métodos Quantitativos para o Mestrado do COFEN. Os estudantes devem considerar esse material como uma sugestão de estudo. Obviamente, o estudante que ler o material antes da aula aprenderá mais facilmente o assunto.


Plano de Estudo de Álgebra Linear

Qualquer livro de Álgebra Linear que o aluno se sinta confortável é suficiente para acompanhar o curso. Entretanto, aqui nesse material vamos focar em três livros. O primeiro pela didática e simplicidade, o segundo pela apresentação geométrica e o terceiro pela comodidade (ele será usado praticamente em toda a segunda parte do curso):

Ref1: Introdução à Álgebra Linear - Adilson Gonçalves e Rita M. L. de Souza [Adilson]

Ref2: Introduction to Linear Algebra - Gilbert Strang [Strang]

Ref3: Mathematics for Economists - Carl P. Simon and Lawrence E. Blume (já disponível em português) [Simon]

É válido mencionar que o livro [Simon] não segue uma ordem muito didática para os assuntos de álgebra linear e não tem uma apresentação adequada de todos os tópicos, mas pode servir como uma excelente referência complementar. Além disso, ele é uma excelente fonte de aplicações.

Tópico 1: Vetores

Leituras:

[Adilson] Capítulo 1 até a seção 1.6

[Adilson] Para ter uma visão geométrica, veja o resto do capítulo 1.

[Simon] Capítulo 10

Exercícios repetitivos: Veja Seções 1.2 a 1.5 do Schaum's Outline of Linear Algebra - Seymour Lipschutz and Marc Lipson.

Aplicações

Um vetor é uma entidade básica de representação em matemática que aparece em muitas situações em economia. Por exemplo, pode falar em vetor de preços de n coordenadas quando nos referimos a cesta de consumo de n produtos ou a um mercado financeiro com n ativos.


Tópico 2: Matrizes

Leituras:

[Adilson] Capítulo 2

[Simon] Capítulo 8

Exercícios repetitivos: Veja Seções 2.2 a 2.7 do Schaum's Outline of Linear Algebra - Seymour Lipschutz and Marc Lipson.

Aplicações

Uma matriz também é uma entidade básica de representação em matemática que aparece em muitas situações em economia.

Matrizes de dados serão muito usadas em econometria, onde cada coluna guardará dados de uma determinada variável aleatória de interesse. Por exemplo, imagine que você quer explicar o salário de um indivíduo usando variáveis relacionadas com o indivíduo. Quais as variáveis que você acredita que podem explicar o salário do indivíduo? Suponha que você acredite que escolaridade, gênero, escolaridade da mãe são variáveis que podem explicar o salário. Então você pode construir uma matriz de dados que inclui essas variáveis em cada coluna.

Em finanças, matrizes também são usadas para guardar payoffs dos ativos em um mercado financeiro. Por exemplo, suponha que o mercado tenha J ativos e seja modelado por S estados. Então, uma matriz de ordem S x J pode ser usada para guardar esses ativos. Veja por exemplo esse modelo nas notas de aula do curso de finanças.

Outras matrizes importantes que aparecem muito em Econometria e Finanças são as Matrizes de Variância-Covariância. Por exemplo, a teoria básica de escolha de carteiras supõe que investidores desejam construir carteiras que possuem altos valores esperados e baixas variâncias. Um conceito fundamental que aparece nesse contexto é a idéia de diversificação. Veja um exemplo simples sobre esse assunto no PRorum.


Tópico 3: Operações Elementares/Sistemas Lineares

Leituras:

[Adilson] Capítulo 3: Seções 3.1, 3.2 e 3.3.

[Strang] Para uma visão geométrica, veja o Capítulo 1: Seções 1.1 a 1.5.

[Simon] Capítulos 6 e 7

Exercícios repetitivos: Veja Seções 3.2 a 3.11 do Schaum's Outline of Linear Algebra - Seymour Lipschutz and Marc Lipson.

Aplicações

Existem várias aplicações de sistemas lineares em Economia.

Por exemplo, em finanças a solução de sistemas lineares pode ser usada para caracterizar se um mercado financeiro é completo ou incompleto. Veja por exemplo essa caracterização nas notas de aula do curso de finanças.

Uma outra aplicação super interessante é o cálculo do Page Rank ou do modelo de Leontief usado em análise de Insumo-Produto. Veja por exemplo um post sobre esse assunto no PRorum



Tópico 4: Inversa de matrizes

Leituras:

[Adilson] Capítulo 3: Seção 3.4.

[Simon] Não tem uma apresentação adequada desse tópico.

Exercícios repetitivos: Veja Seção 3.12 do Schaum's Outline of Linear Algebra - Seymour Lipschutz and Marc Lipson.

Aplicações

A idéia de inversão de matrizes aparece muito em econometria em vários contextos diferentes. Por exemplo, o estimador mais popular de um Modelo de Regressão Linear, conhecido como método dos mínimos quadrados, dependem explicitamente de uma inversão.


Tópico 5: Determinantes

Leituras:

[Adilson] Capítulo 5: Seções 5.1, 5.2, 5.3, 5.4 e 5.5.

[Simon] Capítulos 9 e 26.

Exercícios repetitivos: Veja Seções 8.2 a 8.8 do Schaum's Outline of Linear Algebra - Seymour Lipschutz and Marc Lipson.

Aplicações

Os determinantes aparecem como ferramenta básica em várias situações no curso de economia. No nosso curso de Economia Quantitativa I, determinantes podem ser usadas como uma ferramenta importante de caracterização de matrizes quadradas. Se o determinante de uma matriz A de ordem n é nulo, o sistema linear Ax=0 possui infinitas soluções, o núcleo de A contém infinitos elementos e a imagem de T(x)=Ax não é o Rn.

No nosso curso também usaremos determinantes também para caracterizar se uma matriz é positiva ou negativa definida e isso será fundamental para verificar as condições de segunda ordem de um problema de otimização interior (sem restrições).

Também usaremos determinantes para calcular os autovalores e autovetores associados a uma transformação linear.



Plano de Estudo de Cálculo, Análise Convexa e Otimização

Para esse plano de estudo, vou focar apenas no livro Mathematics for Economists - Carl P. Simon and Lawrence E. Blume [Simon]. Também citarei bastante as notas do curso de Microeconomia I do Professor José Guilherme de Lara Resende do Departamento de Economia da UnB, que vocês usarão no próximo semestre, pois existe um link muito forte entre essa parte do curso e o curso de Microeconomia I.

Para motivar essa parte do curso, eu sugiro que antes da aula, vocês leiam a primeira aula do curso de Microeconomia I do Professor José Guilherme, que você pode acessar aqui.

Tópico 1: Funções de uma Variável Real e Cálculo I


Leituras:

[Simon] Capítulos 2, 3, 4 e 5.


Exercícios repetitivos: Veja Capítulos 3 e 4 do Schaum's Outline of Introduction to Mathematical Economics - Dowling.


Aplicações

É uma base para o próximo tópico.

Tópico 2: Funções Várias Variáveis (Lineares, Formas Quadráticas, Polinômios, Funções Contínuas, Funções Homogêneas e Homotéticas, Funções Côncavas, Funções Convexas, Funções Quase-Côncavas e Funções Quase-Convexas)

Leituras:

[Simon] Capítulo 13, Capítulo 20: Seções 20.1 e 20.4, Capítulo 21: Seções 21.1, 21.2 e 21.3

Aplicações

Várias das funções apresentadas aqui são usadas extensivamente nos cursos de Economia.

Funções Homogêneas e Homotéticas aparecem por exemplo em Microeconomia I. Por exemplo, a função de Demanda Marshalliana é uma função homogênea de grau 0. Por outra lado, várias funções de utilidade que aparecem no curso de Microeconomia I são homotéticas. Veja as aulas de Microeconomia que apresentam essa informação aqui e aqui.

Funções Côncavas, Funções Convexas, Funções Quase-Côncavas e Funções Quase-Convexas também aparecem em Microeconomia I. Em geral funções de utilidade são côncavas ou quase-côncavas (quando as preferências forem convexas), curvas de indiferença são (estritamente) convexas etc.

Polinômios quadráticos aparecem em econometria. Veja por exemplo aqui o problema de otimização que precisamos resolver para encontrar os parâmetros de um modelo de regressão linear. Também usaremos polinômios quadráticos em nosso curso para caracterizar as condições de segunda ordem de um problema de otimização interior (sem restrições).


Tópico 3: Derivada parcial/Diferencial

Leituras:

[Simon] Capítulo 14: Seções 14.1 a 14.4 e 14.8

Exercícios repetitivos: Veja Seções 5.1 a 5.3 do Schaum's Outline of Introduction to Mathematical Economics - Dowling.

Aplicações

Derivadas parciais e diferenciais aparecem em muitos lugares no Curso de Economia. Usamos derivadas para resolver problemas de otimização que será um procedimento comum em Microeconomia I, para definir elasticidades etc. O diferencial total aparece por exemplo na definição da Taxa Marginal de Substituição. Veja exemplo de derivadas e diferenciais totais usados no curso de Microeconomia aqui.


Tópico 4: Cálculo de várias variáveis (Regra da cadeia)

Leituras:

[Simon] Seção 14.5

Aplicações

É uma ferramenta básica de cálculo que aparece em vários contextos. Por exemplo, no Estudo da Teoria do Consumidor em Microeconomia usamos essa "regra" para derivar por exemplo a equação de homogeneidade. Veja aqui.


Tópico 5: Cálculo de várias variáveis (Polinomios de Taylor)

Leituras:

[Simon] Seções 30.2 e 30.3

Aplicações

Polinomios de Taylor são usados em várias situações. No nosso curso, usaremos esses polinômios para estudar as condições de segunda ordem de um problema de otimização irrestrito (interior).


Tópico 6: Cálculo de várias variáveis (Funções implícitas)

Leituras:

[Simon] Seção 15.1

Aplicações

Funções implícitas aparecem em várias situações. Veja por exemplo aqui.


Tópico 7: Formas Quadráticas

Leituras:

[Simon] Capítulo 16: Seções 16.1 e 16.2

Aplicações

Usamos as condições de segunda ordem para caracterizar os pontos críticos.


Tópico 8: Convexidade

Leituras:

[Simon] Seção 21.1 a 21.3

Aplicações

Como já mencionado, muitas das funções usadas no nosso curso são côncavas ou convexas e elas possuem particularidades que devem ser explicitadas.



Tópico 9: Introdução a Otimização

Leituras:

[Simon] Seção 17.1 e 30.1 (Apenas o tópico relacionado com o Teorema de Weierstrass)

Aplicações

Usamos o teorema de Weierstrass em várias situações em Economia quando desejamos garantir a existência da solução de um problema de otimização, sem precisar especificar a forma da função que desejamos otimizar e/ou resolvê-lo.

No curso de Microeconomia I, pode-se garantir a existência da Função de Utilidade Indireta utilizando o Teorema de Weierstrass sempre que a função de utilidade for contínua.. Veja esse conteúdo nas Notas de Microeconomia I do Professor José Guilherme.

No curso de finanças usamos esse resultado para mostrar que na ausência de arbitragem, sempre existe uma solução para o problema de otimização de carteira. Veja aqui os slides associados a esse teorema.

Otimização em geral é uma ferramenta básica de Microeconomia e Econometria.



Tópico 10: Otimização interior

Leituras:

[Simon] Seções 17.2, 17.3, 16.2, 21.5

Aplicações

Usamos as condições de primeira ordem para encontrar os pontos críticos.

Exercícios repetitivos: Veja Seção 5.4 do Schaum's Outline of Introduction to Mathematical Economics - Dowling.


Tópico 11: Otimização com restrições

Leituras:

Seção 18.2

Aplicações

O problema do Consumidor estudado em Microeconomia é exatamente um problema desse tipo. Veja aqui a aula do Professor José Guilherme relacionada com esse assunto.

Exercícios repetitivos: Veja Seção 5.5 do Schaum's Outline of Introduction to Mathematical Economics - Dowling.


Tópico 12: Teorema do Envelope

Leituras:

[Simon] Seções 19.1 e 19.2

Aplicações

Existem em Microeconomia várias aplicações do teorema do Envelope.

Thursday, March 15, 2018

Aula 3 de Métodos Computacionais em Economia (2018) - Recursão

Na nossa terceira aula de métodos computacionais discutimos recursões. Esses são os slides usados em sala.


Abaixo temos os exemplos apresentados em sala de aula:

Implementações da sequencia de Fibonacci

Implementações do fatorial de um número

Solução da Torre de Hanoi

Referências:

Think recursively - Eric S. Roberts

Persian Recursion Anne M. Burns Mathematics Magazine Vol. 70, No. 3 (Jun., 1997), pp. 196-199

The Algorithmic Beauty of Plants - Przemyslaw Prusinkiewicz and Aristid Lindenmayer (1991)

Introduction to recursive programming - Manuel Rubio Sanchez

Mathematical puzzles and diversions (Volume 2) - Martin Gardner

Referências Adicionais para essa aula:

1. Usuários de Python podem ter interesse em olhar:

Think Python - Allen Downey: Capítulo 5.

2. Usuários de C++ podem ter interesse em olhar:

Think C++: Capítulo 4.


Soluções da série de exercícios


Observação: Vários dos exercícios abaixo usam a idéia de Turtle Graphics discutida aqui.

Algoritmo de Euclides [Questão 5 dos slides]

Árvores usando recursão [Questão 6 dos slides]



Pinturas de Mondrian usando recursão [Questão 7 dos slides]


Sierpinski Gasket [Questão 8]

Ilhas de Koch [Questão 9(a)]

Ilhas de Koch 2 [Questão 9(b)]

Gosper Hexagonal Curve [Questão 9(c)]

L-systems [Questão 9(d)]

Tree OL Systems 2 [Questão 9(e)]

Tree OL Systems [Questão 9(f)]

Tree OL Systems [Questão 9(g)]

Tree OL Systems [Questão 9(g) - solução 2]

Tree OL Systems [Questão 9(i)]

Tree OL Systems [Questão 9(o)]

Tree OL Systems [Questão 9(r)]

Como implementar persian recursions [Questão 10(a) e 10(b)]

Triangulo de Sierpinski [Questão 11(a)]

Combinações no jogo de basquete [Questão 11(e)]

Soma de bits [Questão 11(f)]

Números de Catalan [Questão 11(g)]

Números de Catalan [Questão 11(g)]

Árvore binária [Questão 11(h)]

Pirâmides [Questão 11(i)]