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

您所在的位置:网站首页 探索实验平台 数值分析探索性实验一 线性代数方程组求解

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

2023-01-05 02:38| 来源: 网络整理| 查看: 265

实验目的

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

实验要求

在这里插入图片描述

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

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) %求范数误差


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3