数值分析探索性实验一 线性代数方程组求解

实验目的

通过实验理解列选主元 LU 分解,理解线性方程组的雅可比迭代法和高斯-赛德尔迭代法的算法思想,学会做收敛性分析,掌握两个迭代法 Matlab 程序的编写和使用。

实验要求

在这里插入图片描述

  1. 根据表格写出对应的线性方程组;
  2. 判断利用不选主元的 LU 分解法求解该线性方程组是否可行;
  3. 用列选主元的 LU 分解法求解该线性方程组,并给出残差范数;
  4. 调整线性方程组,分别应用雅克比迭代和高斯赛德尔迭代求解该线性方程组并分析其收敛性;
  5. 分析实验结果。

实验原理

1.不选主元 LU 分解法原理
在这里插入图片描述
在这里插入图片描述
2. 矩阵的列选主元 LU 分解法
在这里插入图片描述
3. 雅可比迭代法
在这里插入图片描述
在这里插入图片描述
4. Gauss-Seidel 迭代法
在这里插入图片描述

实验过程原始记录

(一)首先,通过分析题目,根据表格数据可显然得出题目线性方程。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验结果分析

在这里插入图片描述

部分代码

雅可比迭代法

function jacobi(A,b,x0,e,n)
%输入 A为系数矩阵,b为常数的列向量,x0为迭代初始向量,e为精度, n为最大迭代次数.
clc
format short;
D=diag(diag(A));
L=(-1).*tril(A,-1);
U=(-1).*triu(A,1);
k=0;
x=D\(L+U)*x0+D\b;
disp('迭代次数      x_k的分量元素        x_k的范数        x_k对应的剩余范数')
while norm(x-x0)>=e
    x0=x;
    x=D\(L+U)*x0+D\b;
    k=k+1;
    if k>n
        break;
    end
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    h1(k)=norm(x);       %计算x的2范数
    h2(k)=norm(b-A*x);  %计算剩余向量的2范数
    %%%%记录并输出每次迭代步的数据%%%%%%%%%%
    aa=sprintf('%3d',k);
    bb=sprintf('\t%4.4f',x);
    cc=sprintf('\t\t%3.4f',h1(k));
    dd=sprintf('\t\t%14.4e',h2(k));
    disp([aa,' ',bb,' ',cc,' ',dd]);
end

列选主元LU分解法

[L,U,P]=lu(A);%对 A 进行列选主元 LU
>> y=L\P*b;
>> x=U\y;
E=norm(b-A*x) %求范数误差
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值