使用追赶法求解三对角矩阵
class MatrixSolver { //系数矩阵 private double[,] Matrix; private double[] Right; private double[] Result; private double[] Beta; private double[] Y; int N; public MatrixSolver(double[,] M, double[] F) { N = Right.Length; Matrix = M; Right = F; Result = new double[N]; Beta = new double[N]; Y = new double[N]; } public double[] Caculate() { Beta[0] = Matrix[0, 1] / Matrix[0, 0]; for (int i = 1; i < N-1; i++) { Beta[i] = Matrix[i, i + 1] / (Matrix[i, i] - Matrix[i, i - 1] * Beta[i - 1]); } Y[0] = Right[0] / Matrix[0, 0]; for (int i = 1; i <N; i++) { Y[i] = (Right[i] - Matrix[i, i - 1] * Y[i-1]) / (Matrix[i,i] - Matrix[i,i-1] * Beta[i-1]); } Result[N - 1] = Y[N - 1]; for (int i = N-2; i >0; i--) { Result[i] = Y[i]-Beta[i]*Result[i+1]; } return Result; } }