📄 trifac.m
字号:
function [Q,Delta] = trifac (T)
%----------------------------------------------------------------------
% Usage: [Q,Delta] = trifac (T)
%
% Descripton: Factor an n by n tridiagonal coefficient matrix A into
% lower and upper-triangular factors.
%
% Inputs: T = 3 by n matrix containing the nonzero entries of A:
%
% row contents
% ---------------------------------------------------
% 1 A[1][2], A[2][3], ... , A[n-1][n], ---
% 1 A[1][1], A[2][2], ... , A[n-1][n-1], A[n][n]
% 3 A[2][1], A[3][2], ... , A[n][n-1], ---
% ---------------------------------------------------
%
% Outputs: Q = 3 by n matrix containing lower and upper-
% triangular factors of A. The matrix Q is
% used by the function trisub which solves
% Ax = b by forward and backward substitution.
% Delta = deteriminant of A. If Delta ~= 0, A has been
% successfully factored.
%----------------------------------------------------------------------
ep = eps/100;
Delta = 1;
[m,n] = size (T);
if (m ~= 3) | (n < 3)
display ('trifac must be called with a 3 by n matrix.')
return
end
% Factor T into L and U */
Q = zeros (3,n);
Q(3,1:n-1) = T(3,1:n-1);
Q(2,1) = T(2,1);
for k = 1 : n-1
Delta = Delta*Q(2,k);
if abs(Q(2,k)) < ep
Delta = 0;
return
else
Q(1,k) = T(1,k)/Q(2,k);
Q(2,k+1) = T(2,k+1) - T(3,k)*Q(1,k);
end
end
Delta = Delta*Q(2,n);
%----------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -