matlab 三对角矩阵 追赶法,追赶法求解三对角方程及其算例.doc

追赶法求解三对角方程及其算例

追赶法求解三对角方程组

要求:对于给定的三对角系数矩阵和右端项,可以求解线性代数方程组

追赶法的数学理论

设系数矩阵为三对角矩阵

则方程组Ax=f称为三对角方程组。

设矩阵A非奇异,A有Crout分解A=LU,其中L为下三角矩阵,U为单位上三角矩阵,记

可先依次求出L,U中的元素后,令Ux=y,先求解下三角方程组Ly=f得出y,再求解上三角方程组Ux=y。

事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。其计算公式为:

(*)

追赶法的算法和流程图

1.预处理

生成方程组的系数及其除数,事实上,按式(*)可交替生成与:

→→→…→→

其计算公式为

2.追的过程

顺序生成方程组右端:

→→…→

据式(*)的计算公式为

3.赶的过程

逆序得出方程组的解:

→→…→

其计算公式按式为

追赶法的Matlab实现

function x=chase(a,b,c,f)

%求解线性方程组Ax=f,其中A是三对角阵

%a是矩阵A的下对角线元素a(1)=0

%b是矩阵A的对角线元素

%c是矩阵A的上对角线元素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

追赶法的算例实现

算例 用追赶法求解方程组

解答

令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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用追赶法(也称托马斯算法)来求解对角方程组。在MATLAB中,可以使用“tridiag”函数来实现此算法。具体步骤如下: 1. 将对角方程组表示为以下形式:Ax = d,其中A是一个三对角矩阵,d是一个列向量,x是要求解的未知向量。 2. 对于三对角矩阵A,将其拆分为个向量:a、b和c。向量a和c分别表示矩阵A的下对角线和上对角线,向量b表示矩阵A的主对角线。 3. 对向量a、b和c进行追赶法求解。具体来说,首先需要进行一次前向追赶,然后再进行一次后向追赶。在前向追赶中,需要求解一个新的向量y,使得Ly = d,其中L是一个下角矩阵。在后向追赶中,需要求解向量x,使得Ux = y,其中U是一个上角矩阵。 4. 将求解得到的向量x返回作为结果。 下面是一个MATLAB代码示例: ```matlab function x = tridiag(a,b,c,d) % Tridiagonal matrix algorithm (Thomas algorithm) % Inputs: a, b, c - the three diagonals of the matrix A % d - the right-hand side vector % Output: x - the solution vector % Forward elimination (L*y = d) n = length(d); y = zeros(n,1); for i = 2:n w = a(i) / b(i-1); b(i) = b(i) - w*c(i-1); d(i) = d(i) - w*d(i-1); end % Backward substitution (U*x = y) y(n) = d(n) / b(n); for i = n-1:-1:1 y(i) = (d(i) - c(i)*y(i+1)) / b(i); end x = y; end ``` 使用方法: 假设有一个对角方程组Ax=d,其中A是一个3×3的三对角矩阵,d是一个长度为3的列向量。可以使用以下代码来求解未知向量x: ```matlab a = [0, 2, 1]; b = [3, 2, 1]; c = [1, 2, 0]; d = [7; 4; 1]; x = tridiag(a, b, c, d); ``` 其中,向量a、b和c分别对应矩阵A的下对角线、主对角线和上对角线,向量d是方程组的右侧向量。函数“tridiag”将返回向量x,即方程组的解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值