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();
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        public ScalarValue Function(MatrixValue y, MatrixValue x)
        {
            var integral = new SimpsonIntegrator(y);

            return(integral.Integrate(x));
        }