public void ToPositiveInfinityIntegralTest() { var abs = Math.Pow(10, -8); Func <double, double> func1 = (x) => 1 / Math.Pow(x, 2); var res1 = IntegralCalculator.Integrate(1, double.PositiveInfinity, func1); Assert.AreEqual(1.0, res1, abs); Func <double, double> func2 = (x) => x / (Math.Pow(x, 4) + 1); var res2 = IntegralCalculator.Integrate(0, double.PositiveInfinity, func2); Assert.AreEqual(Math.PI / 4, res2, abs); Func <double, double> func3 = (x) => 1 / (Math.Pow(x, 2) + 4 * x + 5); var res3 = IntegralCalculator.Integrate(-1, double.PositiveInfinity, func3); Assert.AreEqual(Math.PI / 4, res3, abs); Func <double, double> func4 = (x) => x *Math.Pow(Math.E, (-1) *x *x); var res4 = IntegralCalculator.Integrate(0, double.PositiveInfinity, func4); Assert.AreEqual(0.5, res4, abs); }
public override void Solve() { base.Solve(); var expressionGrammar = new LabGrammar(); var language = new LanguageData(expressionGrammar); var parser = new Parser(language); var runtime = new LabRuntime(language); ParseTree tree = parser.Parse(Function); if (tree.HasErrors()) { Results.Add(new BoxModel("Error at parsing", "Syntax errors found. Abrting.")); return; } if (Precision * Math.Abs(A - B) > 0.3 && Method != "simpson") { Results.Add(new BoxModel("Precision too small", "Use Simpson's method or make precisionne bigger")); return; } Results.AddRange(IntegralCalculator.Calculate( tree, runtime, A, B, Precision, Method, Subtype )); }
public MyIntegralViewModel(string userid) { var caculator = new IntegralCalculator(userid); Integral = caculator.Integral; UsedIntegral = caculator.UsedIntegral; FrozenIntegral = caculator.FrozenIntegral; }
static void Main() { int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { double[] args = Array.ConvertAll(Console.ReadLine().Split(' '), x => double.Parse(x)); IntegralCalculator.InsertParameter((int)args[0]); Console.WriteLine(func(args[1], args[2]).ToString("f3")); } }
public void FromNegativeToPositiveInfinityIntegralTest() { var abs = Math.Pow(10, -8); Func <double, double> func1 = (x) => x *Math.Pow(Math.E, (-1) *x *x); var res1 = IntegralCalculator.Integrate(double.NegativeInfinity, double.PositiveInfinity, func1); Assert.AreEqual(0, res1, abs); Func <double, double> func2 = (x) => 1 / (x * x + 2 * x + 8); var res2 = IntegralCalculator.Integrate(double.NegativeInfinity, double.PositiveInfinity, func2); Assert.AreEqual(Math.PI / Math.Sqrt(7), res2, abs); }
public void FromNegativeInfinityIntegralTest() { var abs = Math.Pow(10, -8); Func <double, double> func1 = (x) => 2.0 / (Math.Pow(x, 2) + 9); var res1 = IntegralCalculator.Integrate(double.NegativeInfinity, -3.0, func1); Assert.AreEqual(Math.PI / 6, res1, abs); Func <double, double> func2 = (x) => x *Math.Pow(Math.E, (-1) *x *x); var res2 = IntegralCalculator.Integrate(double.NegativeInfinity, 0, func2); Assert.AreEqual(-0.5, res2, abs); }
private void CalcIntegralBtn_Click(object sender, RoutedEventArgs e) { double start = double.Parse(this.IntegralStart.Text); double end = double.Parse(this.IntegralEnd.Text); if (this.Controller.CurrentSelectedFunction != null) { if (this.Controller.CurrentSelectedFunction.IsSolutionFunction) { return; } double answer = IntegralCalculator.CalculateIntegralOf(this.Controller.CurrentSelectedFunction, start, end); this.CalculatedIntegral.Content = answer; //Console.WriteLine(answer); } }
public ActionResult UserIntegral(string u) { if (WebSecurity.UserExists(u)) { var userId = WebSecurity.GetUserId(u).ToString(); var calc = new IntegralCalculator(userId); return(View(new AdminCommonModel() { PageTitle = "用户积分", SubTitle = "管理 & 更新", UserName = u, SearchKeyWord = string.Format("<b>{0}</b> 可用积分 {1},历史总积分 {2},当前冻结积分 {3}", u, calc.Integral, calc.TotalIntegral, calc.FrozenIntegral) })); } return(Content(string.Format("不存在用户\"{0}\"", u))); }
public List <Point> GetCDFDataForPlot(double?xMin = null, double?xMax = null, int numberOfPoints = 1000) { var resultPoints = new List <Point>(); if (!xMin.HasValue) { xMin = PiecewisePDF.Segments.First().FindLeftPoint(); } if (!xMax.HasValue) { xMax = PiecewisePDF.Segments.Last().FindRightPoint(); } //var segments = PiecewisePDF.Segments.OrderBy(s => s.A); var integralValue = default(double); var leftValue = double.NegativeInfinity; foreach (var segment in PiecewisePDF.Segments) { var args = segment.GetPoints(xMin, xMax, numberOfPoints); var points = new List <Point>(); foreach (var arg in args) { integralValue += IntegralCalculator.Integrate(leftValue, arg, (x) => segment[x]); points.Add(new Point(arg, integralValue)); leftValue = arg; } resultPoints.AddRange(points); } return(resultPoints); }