解线性方程组——上三角、下三角,回代算法 | 北太天元

1. 解上三角(回代)

a i i ≠ 0 a_{ii\neq0} aii=0 , i = 1 , 2 , … , n i=1,2,\ldots,n i=1,2,,n

a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋯ a n n x n = b n \begin{aligned} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n&=b_1 \\ a_{22}x_2+\cdots+a_{2n}x_n&=b_2 \\ &\cdots \\ a_{nn}x_n&=b_n \end{aligned} a11x1+a12x2++a1nxna22x2++a2nxnannxn=b1=b2=bn
在这里插入图片描述

北太天元源代码

function [X] = reg_utm(A,b)
% 解上三角方程组 回代算法
% A : 系数矩阵 必须为上三角
% b : 右端常数
% X : 求得的解向量
% 使用要求:A的对角线处元素不为0
%
%   Version:            1.0
%   last modified:      09/09/2023
if  max(ismember(diag(A),0)) == 1
	fprintf('\n Error:使用reg_utm时 对角线上有0元素,不能使用该函数\n\n');
else
    n = length(b);
    X = zeros(n,1);
    X(n) = b(n)/A(n,n);
    for k=n-1:-1:1
        t = A(k,[k+1:n])*X(k+1:n);
        X(k) = (b(k)-t)/A(k,k);
    end
end
end

保存为 reg_utm.m文件

2. 解下三角(前推)

a i i ≠ 0 a_{ii\neq0} aii=0 , i = 1 , 2 , … , n i=1,2,\ldots,n i=1,2,,n
a 11 x 1 = b 1 a 21 x 1 + a 22 x 2 = b 2 ⋯ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n \begin{aligned} &a_{11}x_1&=b_1 \\ &a_{21}x_1+a_{22}x_2&=b_2 \\ &\cdots \\ &a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n&=b_n \end{aligned} a11x1a21x1+a22x2an1x1+an2x2++annxn=b1=b2=bn
在这里插入图片描述

北太天元源代码

function [X] = push_ltm(A,b)
% 解下三角方程组    前推算法
% A : 表示系数矩阵 必须为下三角
% b : 表示右端常数
% X : 求得的解向量
% 使用要求:对角线处元素不为0
%
%   Version:            1.0
%   last modified:      05/16/2023
if  max(ismember(diag(A),0)) == 1
	fprintf('*************************\n 对角线上有0元素,不能使用该函数 \n********************   ');
else
    n = length(b);
    X = zeros(n,1);
    X(1) = b(1)/A(1,1);
    for k=2:n
        t = A(k,[1:k-1])*X(1:k-1);
        X(k) = (b(k)-t)/A(k,k);
    end
end

end

保存为push_ltm.m文件

后面会经常用到两个合起来的形式

function [X] = back_substitution_two(L,U,b)
% Ly=b, Ux=y
% b : 列向量
% X : 解向量
%
%   Version:            1.0
%   last modified:      09/25/2023
    y = push_ltm(L,b);
    X = reg_utm(U,y);
end

保存为 back_substitution_two.m 文件

小结

这三个函数,在后续求解线性方程组中会经常用到,
在用直接法求解线性方程组的过程中,大多数都是先把方程组化成 上三角或是下三角的形式,再进行回代求解。

我们提前把这一步写好,用到的时候,直接用就可以了~

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水折木

谢谢前辈的鼓励,我会继续加油的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值