Ejemplo n.º 1
0
# # , callback=lambda v, H.tenor: force_boundary(v, hs)
# )
# Vi = Vs[-1]
# print tr(Vi)[ids, idv] - tr(hs)[ids, idv]
# Vs = F.solve_implicit(H.tenor/dt, dt, initial=None, callback=None)
# Vfi = Vs[-1]
# print tr(Vfi)[ids, idv] - tr(hs)[ids, idv]

# Vs = douglas(V_init, L1, R1, L2, R2,
# dt, int(H.tenor / dt), crumbs=[V_init]
# # , callback=lambda v, H.tenor: force_boundary(v, hs)
# )
# Vd = Vs[-1]
# print tr(Vd)[ids, idv] - tr(hs)[ids, idv]
# Vs = F.solve_douglas(H.tenor/dt, dt, initial=None, callback=None)
Vfd = F.smooth(H.tenor / dt, dt, initial=None, callback=None, scheme=F.solve_douglas)
print tr(Vfd)[ids, idv] - tr(hs)[ids, idv]
print
print tr(Vfd)[ids, idv], tr(hs)[ids, idv]
print F.price, F.option.analytical
print "Price difference:", F.price - tr(F.grid.domain[-1])[ids, idv]
print
F.grid.reset()

# Vs = F.solve_craigsneyd(H.tenor/dt, dt, initial=None, callback=None)
# Vfcs = Vs[-1]
# print tr(Vfcs)[ids, idv] - tr(hs)[ids, idv]

# Vs = F.solve_craigsneyd2(H.tenor/dt, dt, initial=None, callback=None)
# Vfcs2 = Vs[-1]
# print tr(Vfcs2)[ids, idv] - tr(hs)[ids, idv]