220 likes | 302 Views
Learn about recursive methods in computer programming, including induction with examples, recursive algorithms for factorials, and financial concepts like amortization and loan repayment. Understand the Price table formula and actuarial analysis through branching processes. Dive into quantitative methods applied to business administration.
E N D
Aula 11 Fábio Nakano
Aquecimento... • Demonstre por indução que: • Sn=1+3+5+...+(2n-1)=n2
Projeto coletivo Quantos grupos já concluiram o projeto?
São aprox. 11 grupos • 1 roda problemas de tamanho até 2000 em intervalos de 10 • 2 rodam problemas de 2000 a 20000 em intervalos de 100 • 3 rodam problemas de 20000 até 40000 em intervalos de 200 • 5 rodam problemas de 40000 até 60000 em intervalos de 500 • Roda por algumas horas (6?), pode (deve) paralelizar
Recursão • É um conceito em computação. • É relacionado ao conceito de indução pois • É uma forma indutiva de definir programas. • Nesta, um método chama a si mesmo com os parâmetros adequados.
Exemplo • Definição: n!=n*(n-1)! E 0!=1 • Construa um método recursivo que calcula n!
Como se implementa recursão em um computador? • TAD - Pilha • Prog - Pilha de execução • Prog – Chamada de função • Prog - Recursão
Poupança! • Capital: c • Capital inicial: c0 • Taxa mensal de juros: i
Juros! • Em um período: c=c0*(i+1) • Em n períodos: c=c0*(i+1)^n • Escreva o pseudo-codigo que calcula o capital após n períodos iterativamente e recursivamente. Diga como funciona e qual a complexidade de tempo e de espaço contando também o espaço ocupado pela pilha de execução.
Parcelamento • Quando compramos algo à prestação, a operação financeira equivale a tomar um empréstimo para comprar o bem e pagar a dívida em prestações. • Para quem empresta, é como se fosse um depósito em aplicação de renda fixa. É claro que se render menos que a poupança, é melhor nem emprestar.
Amortização • Dada uma dívida, amortizamos a dívida pelo seguinte processo: • Di=Di-1*(1+i)-Pi , para i>0, quando o pagamento é feito a mês vencido
Escreva um programa que simula a amortização de empréstimos • ... Suponha que o valor da parcela seja fixo. Como você usaria o programa para calcular o valor da parcela?? • ... É o jeito mais eficiente??
“Tabela” Price • Parcelamento (amortização) com parcelas fixas. • Di=Di-1*(1+i)-Pi , quando o pagamento é feito a mês vencido, para i>0 • D0=(P/i)*(1-(1/(1+i)^n)) para parcela constante e resíduo zero.
Um vendedor lhe oferece um conjunto de sala em 8 parcelas, sem entrada e “sem juros” com prestações mensais de R$100,00. A remuneração da poupança é de 0.5% a.m. • De quanto deve ser o desconto mínimo para que seja vantagem pagar à vista??
Actuarialanalysis via branching processes • O problema de cálculo do passivo atuarial de um fundo de pensão pode ser modelado e resolvido recursivamente.
Mais sobre isso em... Métodos Quantitativos Aplicados à Administração de Empresas I
Recorrência • É o nome bonito que damos para séries em que os termos são definidos em função dos termos anteriores. • Até agora trabalhamos definindo e resolvendo recorrências.
Resolver os exercícios 1, 1,2, 1,2,3 de: • http://www.ime.usp.br/~pf/analise_de_algoritmos/aulas/recorrencias.html • Ex 1 depois do exemplo 1, • Ex 1,2 depois do exemplo 2 • Ex. 1,2,3 depois do exemplo 3 • Ler e no mínimo pensar na solução dos demais exercícios.
Sumário • Complexidade assintótica • Pode ser aplicada para tempo de execução, espaço em memória ou qualquer outro fator limitante. • Dá uma idéia do crescimento do fator limitante em função do tamanho do problema. • Indução matemática • Base, hipótese, passo • Recursão • Está intimamente ligado ao conceito de indução matemática. • É uma maneira indutiva de definir programas • Em geral requer mais memória (implicitamente, pelo requisito de pilha de execução) • É mais poderoso que um programa monolítico • Recorrências • Juros compostos • Tabela “price” • Como resolver uma recorrência: “adivinhar” e depois provar por indução. • Complexidade de algoritmos recursivos • Geralmente recaem em uma recorrência. • Teorema mestre – na próxima aula.