matlab 三弯矩方程_第5章 解线性方程组的直接方法

本文详细介绍了MATLAB中解决线性方程组的直接方法,包括高斯消去法、列主元消去法、矩阵三角分解法(LU分解)、平方根法(对称正定矩阵)以及追赶法(三对角矩阵)。通过具体的MATLAB代码示例展示了每种方法的实现过程,并讨论了它们的适用场景和数值稳定性。
摘要由CSDN通过智能技术生成

d20dafee3f039847bc024c7a5c7005e0.png
关于线性方程组的数值解法一般有两类: 直接法迭代法
1. 直接法:直接法就是经过有限步算术运算,可求得线性方程组精确解的方法(若计算过程中没有舍入误差)。常用于求解低阶稠密矩阵方程组及某些大型稀疏矩阵方程组(如大型带状方程组)。
2. 迭代法:迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法。 优点:存储单元少、程序设计简单、原始系数矩阵在计算过程始终不变等; 缺点:存在收敛性及收敛速度问题。常用于求解大型稀疏矩阵方程组(尤其是由微分方程离散后得到的大型方程组)。

本文主要讲直接方法。

1 高斯消去法

高斯消去法也称为逐次消去法,是一个古老的求解线性方程组的方法,特别是由其改进而得到的选主元素消去法、三角分解法仍然是目前计算机上常用的有效方法。

高斯消去法的过程写成定理即为:

,其中

1. 如果
,则可通过高斯消去法将
约化为等价的三角形线性方程组(图1),且计算公式为:

53a2bb257d52db7af93a18f337496c99.png
图1: 三角形线性方程组
(1)消元计算

(2)回代计算

2. 如果
为非奇异矩阵,则可通过高斯消去法(及交换两行的初等变换)将方程组
约化为方程组(图1)。

上述消元和回代过程总的乘除法次数为

,加减法次数为

高斯消去法写成MATLAB代码为:

function [x,t] = GaussEli(A,b)
% 高斯消去法
% A: 系数矩阵
% b: 载荷矩阵
% x: 解矩阵
% t: 时间
tic
[row,col] = size(A);
x = zeros(row,1);

% 消元过程
for k = 1:row-1
    if A(k,k) == 0
        print('主对角元不能为0!');
    else
        for i = k+1:row
            m_ik = A(i,k)/A(k,k);
            for j = k+1:col
                A(i,j) = A(i,j) - m_ik*A(k,j);
            end
            b(i) = b(i) - m_ik*b(k);
        end
    end
end

% 回代过程
x(end) = b(end)/A(end,end);
for k = row-1:-1:1
    sum = 0;
    for j = k+1:col
        sum = sum + A(k,j)*x(j);
    end
    x(k) = (b(k)-sum)/A(k,k);
end

t = toc;
end

但是,由算法可知,高斯消去法对于某些简单的矩阵可能会失败,例如

fbe3ea445cb623c3f3d03060b28dedab.png
图2

2 列主元消去法

由高斯消去法可知,在消元过程中可能出现

的情况,这时消去法将无法进行;而且即使满足主元素
但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,使得最后得到的计算结果不可靠。这也就是小主元带来的麻烦,所以还应该避免采用绝对值小的主元素

由此来看,对于一般矩阵来说,最好每一步选取系数矩阵(或消元后的低阶矩阵)中绝对值最大的元素作为主元素,以使得高斯消去法具有较好的数值稳定性。这就是全主元素消去法的思想,不足之处在于其在选主元时要花费较多机器时间,目前主要使用的是列主元消去法

列主元消去法总体过程与高斯消去法基本一致,唯一不同之处在于在选主元之前增加了一步按列选主元,其过程直接写成MATLAB代码为:

function [x,t] = MainColGaussEli(A,b)
% 列主元素高斯消去法
% A: 系数矩阵
% b: 载荷矩阵
% x: 解矩阵
% t: 时间
tic
[row,col] = size(A);
x = zeros(row,1);

% 消元过程
for k = 1:row-1
    % 按列选主元
    max&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值