Search This Blog

Thursday, July 15, 2021

Métodos Computacionais 2021: Aula 4 - Exercícios resolvidos e Outros




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]

Questões do livro The Algorithmic Beauty of Plants - Przemyslaw Prusinkiewicz

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)]

Questão 9 j

Questão 9 k 

Questão 9 l 

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

Questão 9 (n)

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

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

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

Questão 9 t

Questão 9 x


Persian Recursions que estão presentes no artigo Persian
Recursion Anne M. Burns Mathematics Magazine Vol. 70, No. 3
(Jun., 1997), pp. 196-199

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

 Questões selecionadas dos capítulos 7, 8 e 9 do livro “Introduction
to recursive programming - Manuel Rubio Sanchez”

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

Curva de Hilbert [Questão 11(b)]

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

Tabuleiro [Questão 11(d)]

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)]

John-Mary [Questão 11(j)]

Questão 11 k

Questões do Capı́tulo 4 ou 5  ”Introduction to Recursive Programming“ by Manuel Rubio-Sanchez.

Questão 12 4.1 

Questão 12 4.2 

 Questão 12 4.3

Questão 12 4.4

Questão 12 4.5

Questão 12 4.6 

Questão 12 4.7

Questão 12 4.8

Questão 12 4.8

Questão 12 4.9 

Questão 12 4.10 

Questão 12 4.12

Questão 12 4.13 

4.14 (1ª Edição, 2017)

Questão 12 4.15

4.15

4.16 

 Questão 12 4.17

 Questão 12 5.1

5.2

5.3 (1ª Edição, 2017) 

5.4  


 Questão 12 5.5

5.6

5.7 

5.8

 Questão 12 5.9


Questão 13: Questões do livro “Recursion via Pascal - Rohl”

1.1

1.2 (1ª Edição, 1984) 

1.4

1.8 (1ª Edição, 1984) 

1.11

 7.1 (1ª Edição, 1984)

 

 

 

 

 

 

 






Métodos Computacionais 2021: Aula 3 - Exercícios resolvidos e Outros

Na nossa segunda aula de métodos computacionais discutimos coleções básicas de dados. Esses são os slides usados em sala.

Abaixo temos os exemplos apresentados em sala de aula:

Como usar sequências de dados ou arrays em programação estruturada?

Como usar conjuntos ou sets em programação computacional?

Como usar mapas (maps) ou dicionários em programação computacional?

Soluções de exercícios

Como implementar o produto de matrizes? [Considere apenas a solução convencional nessa resposta. As outras serão discutidas mais para frente no curso]

Como fatorar um número inteiro? 

8) Questões do Capı́tulo 6 (Files, strings and Dictionaries) do A Primer on Scientific Programming with Python por Hans Petter Langtangen.

6.1

6.2

6.2 (1ª Edição, 2009)  

6.2 (5ª Edição, 2016)

6.3

6.5

6.6

6.7 (5ª Edição, 2016) 

6.8 

6.9

6.10

6.11( 5 Edição,2016) 

6.11

6.14 (5ª Edição, 2016) 

6.17

6.19 (1ª Edição, 2009)

6.22 (1ª Edição, 2009)

6.26 (1ª Edição, 2009)







Métodos Computacionais 2021: Aula 2 - Exercícios resolvidos e Outros


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++

Alguns links externos relacionados com essa aula:

Qual o propósito de incluir "if __name__ == '__main__':" em python?

Computação Humana

Page Rank

Melhores livros de Python


Soluções das séries de exercício:

Questão 1

Questão 2

Questão 3

Questão 4

Questão 5

Questão 6

Questão 7

Questão 8 

Questão 9

Questão 10 

Questão 11 (a)

Questão 11 (b)

Questão 11 (c)

Questão 11 (d)  

Questão 11 (e)

Questão 11 (f) 

Questão 12

Questão 13

 Exercício 14 Pag 228

Questão 14

a) Chapter 1 Figura 4

f) Chapter 1 Figura 10

s) Chapter 8 Figura 1

 Questão 15

PProblema 22 (Names Scores) 

Exercício 25 - Projecto Euler 

Exercício 48 - Project Euler






















 

 

 

 

Solução dos Exercícios de Métodos Computacionais em 2021

 

Considere as informações abaixo sobre a solução de exercícios que serão usados para a avaliação no nosso curso: 

 0) Os exercícios a serem resolvidos são individuais e estarão disponíveis juntos com os slides que serão publicados aqui nesse site depois da aula. 

1) Os exercícios que serão usados para avaliação são indicados por uma estrela. Em sequências de exercícios do mesmo capítulo, onde não é explicitado o exercício (mas pode ser escolhido qualquer um), o estudante deve checar nesse blog quais questões ainda não foram resolvidas. Note que tem um post atual a respeito de cada aula com os exercícios passados:

Aula 2

Aula 3

Aula 4

Aula 5

Aula 6

Aula 7

Aula 8

Aula 9

Aula 10

Aula 11

Aula 12

Aula 13

Aula 14

Aula 15

Aula 16

Aula 17

Aula 18

Aula 19

Aula 20

Aula 21

Aula 22

Aula 23

Aula 24

Aula 25

Aula 26

Aula 27

Aula 28

Aula 33

2) Se você escolher um exercício, você atualiza a planilha do google: Planilha

3) Todos os exercícios devem ser resolvidos e publicados no prorum.com. Você precisará criar uma conta no site para perguntar e responder. Você pode usar o seu nome ou um apelido que você criar (nesse caso, você deve avisar ao seu professor que manterá em sigilo). Se você usar o seu nome, suas perguntas, respostas e comentários ficarão públicos. Eu não vejo problema nenhum nisso, visto que todos estão no curso para aprender. Entretanto, alguém pode manter seu nome em sigilo se desejar. O nome público do site e da planilha devem ser os mesmo. 

4) Como fazer a pergunta e respondê-la? 

a) Primeiro você deverá fazer a pergunta. 

b) Depois que você fizer a pergunta, aparecerá uma aba para resposta, onde você incluirá a sua resposta. 

c) Quando terminar de responder a sua pergunta, inclua o link na planilha editável mencionada acima. 

d) O PRorum aceita edição em latex. Use e explore isso. Evite usar editores de equações bizarros como aqueles usados no Word. Se você nunca usou, aproveite essa oportunidade para aprender. As dicas estão nesse link: http://prorum.com/?qa=213/como-escrever-equacoes-matematicas-usar-latex-no-prorum-com&show=213#q213 

5) Os exercícios devem ser auto-contidos para permitir que qualquer pessoa, estudante, ex-aluno, aluno de outro curso (por exemplo, alguns dos exercícios desse curso também são usados no meu curso de Métodos Computacionais ou Economia Quantitativa) possa acessa-lo sem ter que acessar os slides, livro ou outro material específico do curso. Lembre que é sempre difícil entender códigos ou resoluções de outros colegas. Por isso, seja cuidadoso e lembre que esse material que você está gerando contribui para a metade de sua nota no curso e será provavelmente usado por muitos anos e por muitos colegas.

6) Cada estudante deve resolver no máximo um exercício associado a cada grupo de slides.

7) Foi combinado em sala que cada estudante resolveria 5 exercícios e comentaria outros quatro de outros colegas. 

8) Sugere-se que cada aluno se planeje para resolver pelo menos um exercício estrela por mês. Essa política evita o problema de deixar todos os exercícios para o final. Por favor, não deixe para resolver todos os exercícios na última semana. Essa postura gera prejuízos em pelo menos três dimensões: 

a) Quando isso ocorre, a solução dos exercícios apresentam menor qualidade. 

b) Dificulta a vida de seu colega que precisa comentar seu exercício. 

c) Dificulta a vida de seu professor que precisa corrgir seu exercício. 

9) Os comentários devem ser precisos. Não use "Ótima solução"! Use "Ótima solução, pois você explorou..." Ou então "Faltou na solução XXX". "Sua solução pode ser melhorada se você considerar os seguintes aspectos." 

10) Alguns exemplos de boas soluções em versões anteriores do curso: http://prorum.com/?qa=2448/como-posso-testar-um-intervalo-possui-numeros-perfeitos&show=2448#q2448 http://prorum.com/?qa=2414/implementar-extrair-informacoes-conectividade-aciclicidade&show=2414#q2414 http://prorum.com/?qa=2609/como-prever-corretamente-os-digitos-da-base-de-dados-mnist&show=2609#q2609

Apresentação do curso de Métodos Computacionais (2021)

Parte da nota do nosso curso de Métodos Computacionais será  baseada na apresentação de um exercício empírico. Como você terá pouco tempo para apresentar e precisaremos ser rígidos nesse assunto (pois não temos tempo suficiente), você precisa ser pragmático.

Escolha do exercício:

Você deve apresentar um paper desse diretório, parte dele ou pelo menos usar os dados de algum trabalho empírico ou alguma simulação usando uma das técnicas discutidas no curso.

Slide 1: Por que você escolheu esse artigo: Referência e motivação.

Slide 2: Teoria econômica (se for o caso) ou teoria computacional (se for o caso) para o material discutido no artigo (revisão da literatura).

Slide 3: Detalhamento da base de dados (se for o caso).

Slide 4: Algum detalhe ou estatística ou problema computacional que você pretende discutir usando os dados reais (se for o caso).

Slide 5: Alguma figura que você achar relevante apresentar de seus dados.

Slide 6: Tabela com os resultados (se for o caso).

Slide 7: Código que você desenvolveu para fazer o exercício (se for o caso).

O resumo desses slides (em forma de texto) incluindo o código deve ser postado no prorum (para possível referência futura de seus colegas) e o link colocado numa planilha que ficará disponível para vocês aqui nessa página quando o curso iniciar. O título desse post será "Explorando o paper XXX".

Tuesday, June 1, 2021

Apresentação do curso de risco de crédito

 

Parte da nota do nosso curso de Risco de Crédito será  baseada numa apresentação. Como você terá pouco tempo para apresentar (entre 10 min e 15 min em uma das ultimas aulas do curso dependendo do número de alunos que fará apresentações individuais ou em grupo) e precisaremos ser rígidos nesse assunto (pois não temos tempo suficiente), você precisa ser pragmático.

Existem duas opções: Apresentações individuais ou grupos de 2 alunos.

Apresentação:

Você deve usar algum tópico discutido no curso de Risco de Crédito. A sua apresentação pode ser uma apresentação empírica baseada em algum método quantitativo discutido no curso, pode ser uma apresentação que discuta alguma teoria discutida no curso ou ainda pode ser sobre dados de seu interesse. O ponto fundamental é que seja relacionado com algum tópico do curso. Por exemplo, você pode usar esse espaço para já apresentar alguma exploração do tema de sua dissertação, se desejar.

 Sugestão de organização da apresentação:

Slide 1: Por que você escolheu esse tema: Referência e motivação.

Slide 2: Base econômica/finanças para o material que será discutido na apresentação.

Slide 3: Detalhamento do objeto de estudo.

Os outros slides vão depender da sua apresentação específica. Você pode usar figuras ou tabelas para sumarizar os dados ou fluxogramas para representar teorias de seu interesse. 

Como é algo rápido, espera-se uma apresentação concisa com menos que 10 slides.


Wednesday, January 27, 2021

Sobre a Solução de Exercícios no curso de Econometria I (2022-2)

 

Considere as informações abaixo sobre a solução de exercícios que serão usados para a avaliação no nosso curso: 

 0) Os exercícios a serem resolvidos são individuais e estarão disponíveis juntos com os slides que serão publicados aqui nesse site depois da aula. 

1) Os exercícios que serão usados para avaliação são indicados por uma estrela.

2) Se você escolher um exercício, você atualiza a planilha do google: Planilha de exercícios

3) Você só pode escolher um exercício no máximo de cada aula (dessa forma isso te força a concentrar seu esforço em mais tópicos do curso) 

4) Todos os exercícios que incluem dados só podem ser resolvidos em uma dessas linguagens Python, R, Matlab, Julia. Outros exercícios numéricos sem dados podem ser resolvidos em qualquer linguagem de programação estruturada. Casos especiais serão especificados no enunciado da questão.

5) Todos os exercícios devem ser resolvidos e publicados no prorum.com. Você precisará criar uma conta no site para perguntar e responder. Você pode usar o seu nome ou um apelido que você criar (nesse caso, você deve avisar ao seu professor que manterá em sigilo). Se você usar o seu nome, suas perguntas, respostas e comentários ficarão públicos. Eu não vejo problema nenhum nisso, visto que todos estão no curso para aprender. Entretanto, alguém pode manter seu nome em sigilo se desejar. O nome público do site e da planilha devem ser os mesmo. Se seu nome usado na planilha for um alias, você pode informar ao professor individualmente.

6) Como fazer a pergunta e respondê-la? 

a) Primeiro você deverá fazer a pergunta. 

b) Depois que você fizer a pergunta, aparecerá uma aba para resposta, onde você incluirá a sua resposta. 

c) Quando terminar de responder a sua pergunta, inclua o link na planilha editável mencionada acima. 

d) O PRorum aceita edição em latex. Use e explore isso. Evite usar editores de equações bizarros como aqueles usados no Word. Se você nunca usou, aproveite essa oportunidade para aprender. As dicas estão nesse link: Como escrever em Latex no PRorum?

7) Os exercícios devem ser auto-contidos para permitir que qualquer pessoa, estudante, ex-aluno, aluno de outro curso (por exemplo, alguns dos exercícios desse curso também são usados no meu curso de Métodos Computacionais ou Economia Quantitativa) possa acessa-lo sem ter que acessar os slides, livro ou outro material específico do curso. Lembre que é sempre difícil entender códigos ou resoluções de outros colegas. Por isso, seja cuidadoso e lembre que esse material que você está gerando contribui para 60% de sua nota no curso e será provavelmente usado por muitos anos e por muitos colegas. 

8) Foi combinado em sala que cada estudante resolveria 5 exercícios e comentaria outros 5 de outros colegas. 

9) Sugere-se que cada aluno se planeje para resolver pelo menos um exercício estrela por mês. Essa política evita o problema de deixar todos os exercícios para o final. Por favor, não deixe para resolver todos os exercícios na última semana. Essa postura gera prejuízos em pelo menos três dimensões: 

a) Quando isso ocorre, a solução dos exercícios apresentam menor qualidade. 

b) Dificulta a vida de seu colega que precisa comentar seu exercício. 

c) Dificulta a vida de seu professor que precisa corrigir seu exercício e entregar a sua nota até o último dia de aula. 

10) Os comentários devem ser precisos. Não use "Ótima solução!" Use "Ótima solução, pois você explorou..." Ou então "Faltou na solução XXX". "Sua solução pode ser melhorada se você considerar os seguintes aspectos." 

11) Alguns exemplos de boas soluções em versões anteriores do curso de Métodos Computacionais: 

Como posso testar se um intervalo possui números perfeitos? 

Como implementar BFS e DFS e extrair informações úteis sobre um grafo? 

Como prever corretamente os dígitos? 

12) Alguns exemplos de boas soluções do curso de Finanças:

Limitantes para direitos contigentes 

Apreçamento em mercados incompletos

Equilíbrio

Não arbitragem em mercados incompletos

Solução gráfica do problema de programação linear 

13) Alguns exemplos de boas soluções do curso de Econometria I

Paradoxo de Simpson 

Paradoxo de Monty Hall 

Gerar ponto uniformemente distribuído no círculo 

Diagrama de Cobweb

Estimação por ML 

Espaço vetorial

14) A pergunta mais bem votada do Prorum.com

Como otimização pode me ajudar a encontrar o amor da minha vida? 

15) Dúvidas frequentes:

a) É possível comentar em mais de uma questão da mesma aula ou, da mesma forma das resoluções, os comentários precisam ser em questões de aula diferentes?

Note que o número de soluções de cada aula é finito. Suponha que N pessoas resolveram exercícios da primeira aula, se uma única pessoa comentar 5 exercícios dessa aula, não vai sobrar para as outras. Mas não acho que devemos restringir esse ponto, pois pode ser que uma pessoa que respondeu de uma aula pode preferir comentar em outra aula. Então minha sugestão é que antes de pegar para comentar vários exercícios de uma mesma aula, espere um pouco para ver se tem outros interessados.