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 .
Download

clique aqui para formato pdf.