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); }