Métodos Matemáticos em Finanças Junho - Agosto 2003 Lista de Exercı́cios Práticos # 2B Para ser entregue até o dia 11 de julho de 2003 às 19:00. 1. Implemente um programa em matlab que calcule uma aproximação da solução u(t, x) da equação do calor usando um método explı́cito ut = uxx t ∈ [0, T ] e A ≤ x ≤ B u(t, A) = u(t, B) = 0 cond. de contorno (1) u(0, x) = g(x) cond. inicial Para tornar mais fácil a utilização do seu programa nos próximos problemas, siga as seguintes diretivas: • A entrada do programa deve consistir dos argumentos T , A, B, α = (δτ )/(δx)2 , do número Ntotal de pontos (em x) usados na discretização, e do vetor G = [g(A : δx : B)]. • A saida deve consistir da solução calculada em t = T • Comente e documente de forma apropriada seu programa para facilitar a leitura, correção e re-utilização nos próximos exercı́cios. • Tente tornar seu programa “a prova de erros grosseiros”e.g. testando para ver se T foi erroneamente escolhido negativo, ou se A > B. 2. Escreva o dia do mes que voce nasceu na forma mn (e.g. se voce nasceu no dia 27, escreva m = 2 e n = 7). Verifique o comportamento da sua solução numérica no intervalo [A, B] = [−π, π] para apfunção h(x) = cos((2n − 1)x) e para a função h(x) = exp(−x2 /(2(m + 1)))/ 2π(m + 1) para os valores de α = 0.1, 0.5, 1. Descreva suas conclusões. 3. O objetivo do próximo exercı́cio é obter o valor de uma opção europeia com uma função de pay-off h(P ) dada, e um tempo de vencimento τ . Para isso seguiremos a notação do livro de Korn & Korn página 109. 1 (a) Implemente uma subrotina que leva as variáveis (C(t, P ), t, P ) da equação de Black & Scholes nas variáveis que aparecem na equação do calor (u(τ, x), τ, x). Mantenha o restante das variáveis como parâmetros dentro da subrotina/função (ou se preferir coloque-as tambem como argumentos para a subrotina). (b) Implemente a transformação inversa do item acima. (c) Usando os programas acima, calcule o valor de uma opção digital europeia, ou seja quando h é tal que: h(p) = 1 se p ≥ K e h(p) = 0 se p < k. Tome como valor para K o valor de m + n (com sua idade igual a mn) e escolha os outros parâmetros σ e r de forma arbitrária (ao seu gosto). (d) Compare com os resultados exatos dados pela fórmula na página 155 do Korn & Korn. Dicas: 1. Se consideramos a equacao do calor ut = uxx com condicoes de contorno (do tipo Dirichlet) u(t, A) = u1 e u(t, B) = u2 e dados iniciais da forma u(0, x) = g(x), então devemos exigir a compatibilidade g(A) = u1 e g(B) = u2. Portanto, podemos (se quisermos) colocar a informacao da condicao de contorno nos dados g(x), desde que saibamos que estamos resolvendo um problema com condições de contorno compativeis com os dados iniciais. 2. Os exemplos que sugeri para testar o código da equação do calor possuem solucoes exatas (ou aproximadamente exatas). No caso do g(x) = sin(kx) tente algo da forma u(x, t) = exp(−k 2 t) sin(kx). No caso de g(x) = exp(−x2 /(2s)) tente u(x, t) = exp(−x2 /(2(s + t)). Observe que neste caso, a rigor, u não satisfaz as condições de contorno, porem como o intervalo é grande o suficiente, ele satisfaz aproximadamente (ou seja u(t, ±pi) é aproximadamente zero). Voce pode usar estes, bem como outros exemplos para testar se seu codigo está correto. 3. De forma geral podemos transformar a eq. do calor com condições de contorno u(t, A) = u1 e u(t, B) = u2 em um problema com condições de contorno zero através de uma mudança na variável u somando-se uma função da forma a ∗ x + b com a e b constantes apropriadas. Note que u(x, t) = a ∗ x + bt é sempre solução da equação ut = uxx .