public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals)
        {
            double[] x = new double[numberOfIntervals + 1];
            double[] y = new double[numberOfIntervals + 1];

            double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals;

            for (int i = 0; i <= numberOfIntervals; i++)
            {
                x[i] = boundaryValue.beginX + i * step;
            }

            double[] alpha = new double[numberOfIntervals + 1];
            double[] beta  = new double[numberOfIntervals + 1];

            y[0] = boundaryValue.beginY;
            y[numberOfIntervals] = boundaryValue.endY;
            alpha[1]             = beta[1] = 0;

            for (int i = 2; i <= numberOfIntervals; i++)
            {
                double t = (alpha[i - 1] - (2 + step * step));
                alpha[i] = -1 / t;
                beta[i]  = ((2 - x[i - 1] * x[i - 1]) * step * step - beta[i - 1]) / t;
            }

            for (int i = numberOfIntervals - 1; i > 0; i--)
            {
                y[i] = alpha[i + 1] * y[i + 1] + beta[i + 1];
            }

            List <double> res = new List <double>(y);

            return(res);
        }
Exemplo n.º 2
0
        public void getFrom(GetterListOfValues getter, BoundaryValue boundaryValue)
        {
            double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals;

            for (int i = 0; i <= numberOfIntervals; i++)
            {
                x.Add(boundaryValue.beginX + i * step);
            }

            y = getter.getValues(boundaryValue, numberOfIntervals);
        }
Exemplo n.º 3
0
        public Form1()
        {
            InitializeComponent();

            one = new MainEquation(ksi);
            two = new MainEquation(ksi);

            graphicOne    = new Graphic(5);
            graphicTwo    = new Graphic(10);
            boundaryValue = new BoundaryValue(0.0, 0.0, 1.0, 1.0);
        }
Exemplo n.º 4
0
        public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals)
        {
            double[] x = new double[numberOfIntervals + 1];
            double[] y = new double[numberOfIntervals + 1];

            double[] a  = new double[numberOfIntervals + 1];
            double[] d  = new double[numberOfIntervals + 1];
            double[] fi = new double[numberOfIntervals + 1];

            double[] alpha = new double[numberOfIntervals + 1];
            double[] beta  = new double[numberOfIntervals + 1];

            double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals;

            for (int i = 0; i <= numberOfIntervals; i++)
            {
                x[i] = boundaryValue.beginX + i * step;
            }

            for (int i = 1; i < numberOfIntervals; i++)
            {
                d[i]  = (q.integrateFuncton(x[i] - (step / 2), x[i] + (step / 2))) / step;
                fi[i] = (f.integrateFuncton(x[i] - (step / 2), x[i] + (step / 2))) / step;
                a[i]  = step / (k.integrateDevidedOneIntoFunction(x[i - 1], x[i]));
            }
            a[numberOfIntervals] = step / (k.integrateDevidedOneIntoFunction(x[numberOfIntervals - 1], x[numberOfIntervals]));

            ////////
            y[0] = boundaryValue.beginY;
            y[numberOfIntervals] = boundaryValue.endY;

            for (int i = 2; i <= numberOfIntervals; i++)
            {
                alpha[i] = (-a[i]) / (-a[i] - a[i - 1] - d[i - 1] * step * step + alpha[i - 1] * a[i - 1]);
                beta[i]  = (-fi[i - 1] * step * step - a[i - 1] * beta[i - 1]) / (-a[i] - a[i - 1] - d[i - 1] * step * step + alpha[i - 1] * a[i - 1]);
            }

            for (int i = numberOfIntervals - 1; i > 0; i--)
            {
                y[i] = alpha[i + 1] * y[i + 1] + beta[i + 1];
            }

            List <double> res = new List <double>(y);

            return(res);
        }
        public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals)
        {
            double[] x = new double[numberOfIntervals + 1];
            double[] y = new double[numberOfIntervals + 1];

            double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals;

            for (int i = 0; i <= numberOfIntervals; i++)
            {
                x[i] = boundaryValue.beginX + i * step;
            }

            for (int i = 0; i <= numberOfIntervals; i++)
            {
                y[i] = getValue(x[i]);
            }

            List <double> res = new List <double>(y);

            return(res);
        }
Exemplo n.º 6
0
 abstract public List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals);