private Numerator CalculateNumerator(IntegralPoint D1) { Numerator numerator = new Numerator(); numerator.Result = D1.Result; return(numerator); }
public IntegralPoint CalculateIntegralPointD1(double S, double B, double r, double sigma, double t) { IntegralPoint integralPoint = new IntegralPoint(); integralPoint.Numerator = CalculateNumerator(S, B, r, sigma, t); integralPoint.Denominator = CalculateDenominator(sigma, t); integralPoint.Result.Value = integralPoint.Numerator.Result.Value / integralPoint.Denominator.Result.Value; return(integralPoint); }
public IntegralPoint CalculateIntegralPointD2(IntegralPoint D1, double sigma, double t) { IntegralPoint integralPoint = new IntegralPoint(); integralPoint.Numerator = CalculateNumerator(D1); integralPoint.Denominator = CalculateDenominator(sigma, t); integralPoint.Result.Value = integralPoint.Numerator.Result.Value - integralPoint.Denominator.Result.Value; return(integralPoint); }
public async Task <IntegralFunction> CalculateAsync(int n, double T, double r, double sigma, double t, IntegralPoint D2) { IntegralFunction integralFunction = new IntegralFunction(); UnderIntegral[] underIntegral = new UnderIntegral[n]; for (int i = 0; i < n; i++) { UnderIntegral ui = new UnderIntegral(); ui.h = (T / n); ui.ksi = i * ui.h; ui.Result.Value = CalculateUnderIntegral(r, sigma, t, ui.ksi, D2) * ui.h; underIntegral[i] = ui; integralFunction.Result.Value += ui.Result.Value; } integralFunction.UnderIntegral = underIntegral; return(integralFunction); }
private static double CalculateUnderIntegral(double r, double sigma, double t, double ksi, IntegralPoint D2) { return((r / sigma * Math.Sqrt(2 * Math.PI * (t - ksi))) * Math.Exp(-(r * (t - ksi) + (0.5 * Math.Pow(D2.Result.Value, 2))))); }