% Solves the block tridiagonal system Ax=d, where a, b, and c are the three
% diagonals of A. If the size of the block is n-by-n, then b is M*n-by-n, d
% is M*n-by-*, a and c are each (M-1)*n-by-n.
% M = 12; n = 3;
% a = rand((M-1)*n,n); b = 3+2*rand(M*n,n); c = rand((M-1)*n,n);
% d = rand(M*n,10);
% x = BlockTriSolve(a, b, c, d);
% We can make block matrix A = BlockDiag(a, n, n, -1) + BlockDiag(b, n, n)
% + BlockDiag(c, n, n, 1); and then x = A\d to confirm the solution.
% Computational Cost of this method is 2M(13n^3/3+4n^2-4n/3). The cost is
% of order M*n^3. This is better than the backslash which is order (M*n)^3
Lateef Adewale Kareem (2023). Block Tridiagonal Solver (https://www.mathworks.com/matlabcentral/fileexchange/76078-block-tridiagonal-solver), MATLAB Central File Exchange. 检索来源 .