public static void Main() { // 1. Create the option (Factory Method pattern) Option myOption = CreateOption(); // 2. Define the pde of concern (Bridge pattern) IBSPde pde = new Pde_BS(myOption); // 3. Discrete mesh sizes. int J = 325; int N = J; Console.Write("NS: "); J = Convert.ToInt32(Console.ReadLine()); Console.Write("NT: "); N = Convert.ToInt32(Console.ReadLine()); // 4. The domain in which the PDE is defined. Range <double> rangeX = new Range <double>(0.0, myOption.FarFieldCondition); Range <double> rangeT = new Range <double>(0.0, myOption.ExpiryDate); // 5. Create FDM Solver. IBVPFDM fdm = new ADE(pde, rangeX, rangeT, J, N); // 6. Calculate the matrix result. NumericMatrix <double> sol = fdm.result(); // 7. Display the results in Excel. ExcelMechanisms exl = new ExcelMechanisms(); try { exl.printOneExcel(fdm.XValues, fdm.vecNew, "ADE method", "Stock", "Value", "V"); } catch (Exception e) { Console.WriteLine(e); } }
public static void Main() { // Option data double expiry = 0.25; double strike = 10.0; double volatility = 0.30; double interest = 0.06; double dividend = 0.0; double truncation = 5 * strike; // Magic number /* // P = 5.84.. * double expiry = 0.25; * double strike = 65.0; * double volatility = 0.30; * double interest = 0.08; * double dividend = 0.0; * double truncation = 5 * strike; // Magic number */ Pde_BS pde = new Pde_BS(expiry, strike, volatility, interest, dividend, truncation); // Numerical data int J = 325; int NT = 300 * 300; Console.WriteLine("Explicit method, be patient ..."); // Create the mesh Mesher1D mesh = new Mesher1D(0.0, truncation, expiry); Vector <double> xarr = new Vector <double>(mesh.xarr(J)); Vector <double> tarr = new Vector <double>(mesh.tarr(NT)); FDM fdm = new FDM(pde); FDMDirector fdir = new FDMDirector(fdm, xarr, tarr); fdir.Start(); printOneExcel(xarr, fdir.current(), "Value"); // Display in Excel }