数值分析:高斯消元法
1 实验目的
高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。试编写顺序Gauss消去法与列主元Gauss消去法求线性方程组解的通用子程序,并用其求解给定线性方程组的解,
2 实验内容
编写顺序Gauss消去法与列主元Gauss消去法求线性方程组解的通用子程序,并用其求解如下线性方程组的解,并比较计算结果的精确度。
3 实验知识点
高斯消元法的原理是:若用初等行变换将增广矩阵化为行阶梯阵,则AX=B与CX=D是同解方程组。所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。
4 算法思想
高斯消元法的步骤:
1、把方程组转换成增广矩阵。
2、利用初等行变换来把增广矩阵转换成行阶梯阵。
3、转换为行阶梯阵,判断解的情况。
①无解。当方程中出现(0,0,…,0,a)的形式,且a!=0时,说明是无解的。
②唯一解条件是k=equ,即行阶梯阵形成了严格的上三角阵。利用回代逐一求出解集。
③无穷解。条件是k<equ,即不能形成严格的上三角形,自由变元的个数即为equ–k,但有些题目要求判断哪些变元是不缺定的。
5 实验代码
5.1 主函数:GaussMethod.m
clear;clc;close all;
%构造系数矩阵
A=zeros(42,42);
a=6*ones(1,length(A(:,1)));
b=8*ones(1,length(A(:,1))-1);
c=ones(1,length(A(:,1))-1);
A=diag(a)+diag(b,-1)+diag(c,1);
%构造向量
B=[7 15*ones(1,length(A(:,1))-2) 14]';
%% 顺序高斯消去法
x=gauss(A,B)
%% 列主元高斯消去法
x1=DetGauss(A,B)
1;
5.2 顺序高斯消去法 gauss.m
function x=gauss(a,b)
%顺序高斯消去法
[n]=length(a);
nb=length(b);
det=1;%存储行列式值
x=zeros(n,1);
for k=1:n-1
for i=k+1:n
if a(k,k)==0
return
end
m=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-m*a(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*a(k,k);
end
det=det*a(n,n);
for k=n:-1:1
for j=k+1:n
b(k)=b(k)-a(k,j)*x(j);
end
x(k)=b(k)/a(k,k);
end
5.2 顺序高斯消去法 DetGauss.m
function x=DetGauss(a,b)
% 列主元高斯消去法
[n]=length(a);
nb=length(b);
det=1;
x=zeros(n,1);
for k=1:n-1
amax=0;
for i=k:n
if abs(a(i,k))>amax
amax=abs(a(i,k));
r=i;
end
end
if amax<1e-10
return;
end
if r>k
for j=k:n
z=a(k,j);
a(k,j)=a(r,j);
a(r,j)=z;
end
z=b(k);
b(k)=b(r);
b(r)=z;
det=-det;
end
for i=k+1:n
m=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-m*a(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*a(k,k);
end
det=det*a(n,n);
for k=n:-1:1
for j=k+1:n
b(k)=b(k)-a(k,j)*x(j);
end
x(k)=b(k)/a(k,k);
End
6 实验结果
6.1 顺序高斯消去法
6.2 列主元高斯消去法
观察结果发现,列主元高斯消去法计算结果精度更高,顺序高斯消去法部分计算结果不准确
数值分析:高斯消元法相关推荐
- 数值分析(一):全选主元高斯消元法的C++实现
编程最重要的就是要有很强的目的性,面对绝对真诚的计算机时,如果自己还模棱两口,那又如何让计算机明白我们要做的事情呢?所以在编程之前,规划好绝对是磨刀不误砍柴工.笔者基于已有的编程知识,正好又在学习&l ...
- 【Python算法】数值分析—列主元高斯消元法——附源码
一.背景 线性方程组有很多种解法,可以最简单的直接代入消元计算,但是运算量较大,且过程复杂不直观. 高斯消元法目的是预处理方程组的系数矩阵,将系数矩阵变换为上三角矩阵,这样整个方程就变得清晰直观很多, ...
- 【渣硕的数学笔记】数值分析
Preface:数值分析(计算问题!) 应试教会了我们要好好学习,或者对于我这样的学渣来说,不得不学习,但终归还是学到了一些东(tao)西(lu),但考完感觉空空的,想反思和总结下所学所得,为一些不为 ...
- c语言消去法解线性方程组,高斯消元法解线性方程组(C++实现)
最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析>第5版(李庆扬编),对应于该书的P145页,详细讲解了公式.因本人时间有限,暂时不详细 ...
- 数值分析 解线性方程组的直接法(一)
数值分析第三章 引言 高斯消去法 高斯消去法的基本思想 n元线性方程组的高随消去法 高斯消去法的计算步骤 列主元高斯消去法 列主元高斯消去法的基本思想 算法步骤 列主元高斯消元法的代码实例 引言 对于 ...
- 高斯消元法列主消元法
高斯消元法&&列主消元法 写在前面 高斯消元法 列主消元法 写在前面 最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析> ...
- 高斯消元法求解方程组(要有python基础和线性代数的基础)
本人这学期开的是一门数值分析课,老师要求用python写出实现某些算法的代码,当遇到第一个高斯消元法,印象深刻的是这个编程与以往的编程不一样,从这几点来讲:首先,我是在上这门课之前就将python的基 ...
- 数值分析(六):C++实现非奇异矩阵A的LU分解
矩阵的LU分解是指非奇异矩阵A能够分解成单位下三角矩阵L和上三角矩阵U的乘的形式,这部分内容是高斯消元法章节讲解的内容,因为最近开始复习数值分析这门功课,所以又回头来开始学习,于是就碰到了矩阵A的LU ...
- python数值分析算例_只要一杯秋天的奶茶,就能学会Python数值分析(2)
只要一杯秋天的奶茶,就能学会Python数值分析(2) 上节(https://www.jianshu.com/p/671a94ce586b)说到高斯消元法,今天从高斯列主元消元法开始,拓展到线性方程组 ...
最新文章
- ATS 5.3.0中利用grep得到纯净的配置文件
- 转-Redis学习手册(目录)
- opengl之自动纹理
- Android draw9patch点九图常识
- [vim]高亮查找匹配
- Unbuntu 自动重启MySQL
- 图片流写出 并带数据_IO流阶段---字符流
- 了解css中伪元素 before和after的用法
- 深度剖析JDK动态代理机制
- mysql多数据库_mysql 多端口及主从数据库
- Bitmap缩放(二)
- Servlet教程第7讲笔记
- 双十二大前端工程师读书清单
- 前端生成小程序二维码
- 深度时空网络、记忆网络与特征表达学习在 CTR 预估中的应用
- SIFT原作者David Lowe主页
- iCollections—桌面管理工具
- 利用Wifidog实现微信wifi连接
- 如何简单粗暴的干掉2345主页
- 自制拖把机器人_懒出新境界:可以自己洗拖布的机器人
热门文章
- qmp32下载_U盘歌曲播放顺序调整教程
- 测序是测量你的遗传信息
- 使用tf.data.Dataset加载numpy数据
- 一文掌握Pandas可视化图表
- 片上总线Wishbone 学习(三)Wishbone互联的类型
- SpringBoot + Element UI 楠橘星后台管理系统一键打包部署教程文档
- 游戏服务器稳定ping值,网友玩游戏时Ping值超过了2亿!
- 广东9月计算机二级考试时间,2021年9月广东计算机等级考试时间:9月25日-27日
- SSM毕设项目校园设备巡检管理系统04b46(java+VUE+Mybatis+Maven+Mysql)
- PM第1步:产品需求文档