python矩阵左除_计算方法(三)线性方程求解5-追赶法

追赶法: 如下列方程组Ax=b

82a35ca24f86ea10c333b5847cfe52c6.png

通过变化Ax=b为LUx=b得

be2503adcd81b3ee7e2a4487d4672edd.png

Matlab代码

function [x] = chase(A,d)

%求解线性方程组 Ax=d, 其中 A是三对角阵,如果输入的不是三对角矩阵就会报错

%A是系数矩阵

%d是方程组的右端向量

if ~isequal(tril(A,-1)-diag(diag(tril(A,-1),-1),-1),zeros(size(A)))

error('输入矩阵不是一个三角矩阵');

end

if ~isequal(triu(A,1)-diag(diag(triu(A,1),1),1),zeros(size(A)))

error('输入矩阵不是一个三角矩阵');

end

a=[0;diag(tril(A,-1),-1)];%下对角线

b=diag(A);%中对角线

c=[diag(triu(A,1),1);0];%上对角线

l=zeros(size(a,1),1);%求L

u=zeros(size(b,1),1);%求U

n=size(b,1);%矩阵的维度

x=zeros(n,1);

y=zeros(n,1);

u(1)=b(1);

for i=2:n

l(i)=a(i)/u(i-1);

u(i)=b(i)-l(i)*c(i-1);

end

y(1)=d(1);

for i=2:n

y(i)=d(i)-l(i)*y(i-1);

end

x(n)=y(n)/u(n);

for i=n-1:-1:1

x(i)=(y(i)-c(i)*x(i+1))/u(i);

end

end

Python代码(后继补上)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值