private void Button1Click(object sender, EventArgs e) { double result = 0; var numberOfSteps = Convert.ToInt32(stepFactor.SelectedItem); var lowerLimit = Convert.ToDouble(lowerLimitBox.Text); var upperLimit = Convert.ToDouble(upperLimitBox.Text); Cursor.Current = Cursors.WaitCursor; result = SimpsonIntegrator.Integrate(F1, lowerLimit, upperLimit, numberOfSteps); Cursor.Current = Cursors.Default; resultBox.Text = result.ToString(); }
private void CalculateButtonClick(object sender, EventArgs e) { double result = 0; // The simplest numerical integration algorithm is Simpson's rule. SimpsonIntegrator simpson = new SimpsonIntegrator(); // You can set the relative or absolute tolerance to which to evaluate the integral. //simpson.RelativeTolerance = 1e-5; //You can select the type of tolerance using the ConvergenceCriterion property: //simpson.ConvergenceCriterion = ConvergenceCriterion.WithinRelativeTolerance; //The Integrate method performs the actual integration: //result = simpson.Integrate(Math.Sin, 0, 2); resultBox.Text = result.ToString(); }
public void Solve(string name, PulsationAlphaData data) { using (CalculationDbContext context = new CalculationDbContext()) { var bundle = context.GetBundle(data.GroupId); int NPeriod = bundle.PeriodN(); var grid = bundle.GetGrid(); var alphaGroup = new Bundle("Нахождение коэффициентов alpha", data); int Nt = bundle.GetCount(); context.SaveChanges(); try { IIntegrator integrator = new SimpsonIntegrator(); var lastPeriodLayers = bundle.GetArrays(Nt - NPeriod, NPeriod); int number = 0; for (int deg = 2; deg <= 3; deg++) { double[] alphaValues = new double[NPeriod]; for (int i = 0; i < NPeriod; i++) { alphaValues[i] = CalculateAlpha(integrator, deg, lastPeriodLayers[i], grid.Values, grid.h, NPeriod); } alphaGroup.AddArray(string.Format("alpha{0}", number + 1), number, alphaValues); number++; } OnSolved(true); } catch (Exception exception) { OnSolved(false, exception); } } }
public ScalarValue Function(MatrixValue y, MatrixValue x) { var integral = new SimpsonIntegrator(y); return(integral.Integrate(x)); }