static public double?IntegralWithError(ICollection <XYDataModel> dataValue, double a = 0, double b = 0, double E = 0.01)
        {
            double ErrorValue = 1;

            if (a >= b)
            {
                a = dataValue.Select(X => X.X).ToList().Min(); b = dataValue.Select(X => X.X).ToList().Max();
            }

            double step = (b - a) / dataValue.Count;

            ICollection <XYDataModel> tempValue = new List <XYDataModel> {
            };

            while (ErrorValue > E)
            {
                step     /= 2.0;
                tempValue = new List <XYDataModel> {
                };

                for (double i = a; i <= b; i += step)
                {
                    tempValue.Add(new XYDataModel {
                        X = i, Y = Math.Round(_interpolation.InterpolationPolynom(dataValue, i), 15)
                    });
                }

                ErrorValue = Error(tempValue, step, a, b);
            }

            return(Integral(tempValue, step, a, b));
        }
Beispiel #2
0
        static public double?DifferentiationWithRunge(ICollection <XYDataModel> dataValue, double xValue, double E = 0.01)
        {
            double ErrorValue = 1;

            double valueH = 0, valueH2 = 0;

            double step = (dataValue.Last().X - dataValue.First().X) / dataValue.Count;

            while (ErrorValue > E)
            {
                ICollection <XYDataModel> tempValue = new List <XYDataModel> {
                };

                for (double a = dataValue.First().X; a <= dataValue.Last().X; a += step)
                {
                    tempValue.Add(new XYDataModel {
                        X = a, Y = Math.Round(_interpolation.InterpolationPolynom(dataValue, a), 15)
                    });
                }

                valueH = valueH2;

                valueH2 = Differentiation(tempValue, xValue).Value;

                ErrorValue = Math.Abs(valueH2 - valueH);

                step /= 2.0;
            }

            return(valueH2);
        }
Beispiel #3
0
 static public double Interpolation(ICollection <XYDataModel> data, double X) => _interpolation.InterpolationPolynom(data, X);