public IActionResult OnGet() { if (!ModelState.IsValid) { return(Page()); } var samples = GetSamples(); var cdf = new CDF(samples); Percentile = cdf.Calculate(GetRandomVariable()); var cdfInv = new InverseCDF(samples); const double eps = .0001; for (var perc = 0.0; perc <= .95 + eps; perc += .05) { var inv = cdfInv.Calculate(perc); Percentiles.Add(inv); XAxis.Add(Convert.ToInt32(perc * 100)); } return(Page()); }
static void Main(string[] args) { double oneOver2Pi = 1.0 / (1.0 * Math.Sqrt(2 * Math.PI)); Console.WriteLine(NormalCDFInverse(0.99)); Console.WriteLine(inv_cdf(0.99)); Console.WriteLine(InverseCDF.QNorm(0.99, 0, 1, true, false)); Console.WriteLine(NormalCDFInverse(0.5)); Console.WriteLine(inv_cdf(0.5)); Console.WriteLine(InverseCDF.QNorm(0.5, 0, 1, true, false)); Console.WriteLine(NormalCDFInverse(0.31)); Console.WriteLine(inv_cdf(0.31)); Console.WriteLine(InverseCDF.QNorm(0.31, 0, 1, true, false)); //x4−8x2 + 5 Func <double[], double> testFunc1 = (x) => { return(Math.Pow(x[0], 4) - 8 * Math.Pow(x[0], 2) + 5); }; Func <double[], double>[] dtestFunc1 = new Func <double[], double> [1]; dtestFunc1[0] = (x) => { return(4 * Math.Pow(x[0], 3) - 16 * x[0]); }; Func <double[], double> testConstr = (x) => { return(5 - Math.Exp(x[0]) + 2.0 * Math.Pow(x[0] - 1, 2)); }; Func <double[], double> testv = (x) => { double a = x[0]; return(0.0); }; //Func<Variables, double> testFunc = (x) => { // return Math.Pow(x.Vars[0], 4) - 3 * Math.Pow(x.Vars[0], 3) + 2; //}; //Func<Variables, double> dTestfunc = (x) => //{ // return 4 * Math.Pow(x.Vars[0], 3) - 9 * Math.Pow(x.Vars[0], 2); //}; //x4−3x3 + 2 //TestFunc(); Func <double[], double> bananaFunc = (x) => { return(Math.Pow(1 - x[0], 2) + 100 * Math.Pow(x[1] - x[0] * x[0], 2)); }; Func <double[], double> powell = (x) => { return(Math.Pow(x[0] + 10 * x[1], 2) + 5 * Math.Pow(x[2] - x[3], 2) + Math.Pow(x[1] + 2 * x[2], 4) + 10 * Math.Pow(x[0] - x[3], 4)); }; OptVector[] ttt = new OptVector[3]; ttt[0] = new OptVector(new double[3] { 1, 2, 3 }); ttt[1] = new OptVector(new double[3] { 4, 5, 6 }); ttt[2] = new OptVector(new double[3] { 7, 8, 9 }); var tr = OptVector.Transpose(ttt); //TestsSQP.Test0(); TestsSQP.Test1(); TestsSQP.Test2(); TestsSQP.Test3(); ////TestsSQP.Test4(); ////TestsSQP.Test5(); TestsSQP.Test6(); TestsSQP.Test7(); TestsSQP.Test8(); TestsSQP.Test9(); TestsSQP.Test10(); TestsSQP.Test11(); TestsSQP.Test12(); TestsSQP.Test13(); TestsSQP.Test14(); TestsSQP.Test15(); TestsSQP.Test16(); TestsSQP.Test17(); TestsSQP.Test18(); TestsSQP.Test19(); TestsSQP.Test20(); TestsSQP.Test21(); TestsSQP.Test22(); TestsSQP.Test23(); TestsSQP.Test24(); TestsSQP.Test25(); TestsSQP.Test26(); TestsSQP.Test27(); TestsSQP.Test28(); //TestCGMethod(); BFGS bfsg = new BFGS(); var result0 = bfsg.Solve(powell, new double[] { 3.0, -1.0, 0.0, 1.0 }, 10000); Console.WriteLine("Min " + powell(result0)); NLCG gradient = new NLCG(); var result = gradient.Solve(powell, new double[] { 3.0, -1.0, 0.0, 1.0 }, 4000); Console.WriteLine("Min " + powell(result)); SteepestDescent gradientSteep = new SteepestDescent(); var result1 = gradientSteep.Solve(powell, new double[] { 3.0, -1.0, 0.0, 1.0 }, 10000); Console.WriteLine("Min " + powell(result1)); //Variables result = SteepestDescent(testFunc, dTestFunc, 2, 20); for (int i = 0; i < result.Length; i++) { Console.WriteLine("result " + result[i]); } //Console.WriteLine("ver " + testFunc(result)); Console.ReadLine(); }