private Tridiagonalmatrix ErzeugeTridiagonalmatrix()
        {
            Tridiagonalmatrix T = new Tridiagonalmatrix(anzahlDaten - 2);

            for (int i = 0; i < T.Dimension - 1; i++)
            {
                T.Matrix[i, i + 1] = xDiff[i + 1];
                T.Matrix[i, i]     = 2 * (xDiff[i] + xDiff[i + 1]);
                T.Matrix[i + 1, i] = xDiff[i + 1];
            }
            T.Matrix[T.Dimension - 1, T.Dimension - 1] = 2 * (xDiff[T.Dimension - 1] + xDiff[T.Dimension]);

            return(T);
        }
        private double[] LoeseKubischeInterpolation()
        {
            double[] v = new double[anzahlDaten];

            // natürliche Interpolation: an den Rändern verschwindet die zweite Ableitung
            v[0] = 0;
            v[anzahlDaten - 1] = 0;

            Tridiagonalmatrix T = ErzeugeTridiagonalmatrix();

            double[] konstantenvektorNatuerlich = ErzeugeKonstantenvektor();

            double[] loesungsvektor = T.LoeseLGS(konstantenvektorNatuerlich);

            for (int i = 1; i < anzahlDaten - 1; i++)
            {
                v[i] = loesungsvektor[i - 1];
            }

            return(v);
        }