1、 追赶法求解三对角方程组追赶法求解三对角方程组 要求:对于给定的三对角系数矩阵和右端项,可以要求:对于给定的三对角系数矩阵和右端项,可以求解线性代数方程组求解线性代数方程组 一、一、追赶法的数学理论追赶法的数学理论 设系数矩阵为三对角矩阵 1122233111000000000000000000nnnnnbcabcabAabcabLLLMMMMMMLL则方程组 Ax=f 称为三对角方程组。设矩阵 A 非奇异,A 有 Crout 分解 A=LU,其中 L 为下三角矩阵,U 为单位上三角矩阵,记 11222331100001000000010000000100,000000000000001nnn
2、nbLULLLLLLMMMMMM MMMMLLLLL可先依次求出 L,U 中的元素后,令 Ux=y,先求解下三角方程组 Ly=f 得出y,再求解上三角方程组 Ux=y。事实上,求解三对角方程组的 2 追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。其计算公式为:(*)1111,1111,111,2,3,1,2,1iiiiiiiiiiiiiinniiiicfbyincabafyyxyinnxyxLL对对二、二、追赶法的算法和流程图追赶法的算法和流程图 1.预处理预处理 生成方程组的系数及其除数,事实上,按式(*)可交替生成与:iuididiu 1d1u2d1nund
3、其计算公式为 1,.,2,1,/cub111ii11niuabdddiiiii2.追的过程追的过程 顺序生成方程组右端:iy2yny据式(*)的计算公式为 nidyafydfyiiiii,.,3,2,/)(/11113.赶的过程赶的过程 逆序得出方程组的解:ix nx1nx1x其计算公式按式为 1,2,1,1,nnixuyxyxiiiinn三、三、追赶法的追赶法的 Matlab 实现实现 function x=chase(a,b,c,f)%求解线性方程组 Ax=f,其中 A 是三对角阵%a 是矩阵 A 的下对角线元素 a(1)=0%b 是矩阵 A 的对角线元素%c 是矩阵 A 的上对角线元素
4、c(N)=0%f 是方程组的右端向量 N=length(f);x=zeros(1,N);y=zeros(1,N);d=zeros(1,N);u=zeros(1,N);%预处理 d(1)=b(1);for i=1:N-1 u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i);end%追的过程 y(1)=f(1)/d(1);for i=2:N y(i)=(f(i)-a(i)*y(i-1)/d(i);end%赶的过程 x(N)=y(N);for i=N-1:-1:1 x(i)=y(i)-u(i)*x(i+1);end 四、四、追赶法的算例实现追赶法的算例实现 算例算例 用追赶法求解方程组 1016432153-1-21-2-31-1-2xxxx解答解答 令 a=0,-1,-1,-3;b=2,3,2,5;c=-1,-2,-1,0;f=6,1,0,1;在命令窗口运行语句 x=chase(a,b,c,f)得结果为 x=5 4 3 2