ChebyshevInterpolation.Interpolate.Lagrange C# (CSharp) Method

Lagrange() public method

public Lagrange ( int n, double z, Array x, Array y ) : double
n int
z double
x Array
y Array
return double
        public double Lagrange(int n, double z, double[] x, double[] y)
        {
            double Epsilon = 1.0e-8;
            double sum = 0.0;

            for (int k = 0; k < n; k++)
            {
                double numer = 1.0;
                double denom = 1.0;
                double prod = 1.0;

                for (int j = 0; j < k; j++)
                {
                    numer = z - x[j];
                    denom = x[k] - x[j];

                    if (Math.Abs(denom) > Epsilon)
                        prod *= numer / denom;
                }

                for (int j = k; j < n; j++)
                {
                    numer = z - x[j];
                    denom = x[k] - x[j];

                    if (Math.Abs(denom) > Epsilon)
                        prod *= numer / denom;
                }

                sum += y[k] * prod;
            }

            return sum;
        }

Usage Example

Example #1
0
        private float H(double z)
        {
            double[] x = new double[number + 1];
            double[] y = new double[number + 1];

            int index = -1;

            for (int i = 0; i < Split; i++)
            {
                if (z >= lx[i, 0] && z <= lx[i, number])
                {
                    index = i;
                    break;
                }

                else if (z < lx[i, 0])
                {
                    index = 0;
                    break;
                }

                else if (z > lx[Split - 1, number])
                {
                    index = Split - 1;
                    break;
                }
            }

            for (int i = 0; i <= number; i++)
            {
                x[i] = lx[index, i];
                y[i] = ly[index, i];
            }

            return((float)inter.Lagrange(number + 1, z, x, y));
        }