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 列主元高斯消去法

                                            

观察结果发现,列主元高斯消去法计算结果精度更高,顺序高斯消去法部分计算结果不准确

数值分析:高斯消元法相关推荐

  1. 数值分析(一):全选主元高斯消元法的C++实现

    编程最重要的就是要有很强的目的性,面对绝对真诚的计算机时,如果自己还模棱两口,那又如何让计算机明白我们要做的事情呢?所以在编程之前,规划好绝对是磨刀不误砍柴工.笔者基于已有的编程知识,正好又在学习&l ...

  2. 【Python算法】数值分析—列主元高斯消元法——附源码

    一.背景 线性方程组有很多种解法,可以最简单的直接代入消元计算,但是运算量较大,且过程复杂不直观. 高斯消元法目的是预处理方程组的系数矩阵,将系数矩阵变换为上三角矩阵,这样整个方程就变得清晰直观很多, ...

  3. 【渣硕的数学笔记】数值分析

    Preface:数值分析(计算问题!) 应试教会了我们要好好学习,或者对于我这样的学渣来说,不得不学习,但终归还是学到了一些东(tao)西(lu),但考完感觉空空的,想反思和总结下所学所得,为一些不为 ...

  4. c语言消去法解线性方程组,高斯消元法解线性方程组(C++实现)

    最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析>第5版(李庆扬编),对应于该书的P145页,详细讲解了公式.因本人时间有限,暂时不详细 ...

  5. 数值分析 解线性方程组的直接法(一)

    数值分析第三章 引言 高斯消去法 高斯消去法的基本思想 n元线性方程组的高随消去法 高斯消去法的计算步骤 列主元高斯消去法 列主元高斯消去法的基本思想 算法步骤 列主元高斯消元法的代码实例 引言 对于 ...

  6. 高斯消元法列主消元法

    高斯消元法&&列主消元法 写在前面 高斯消元法 列主消元法 写在前面 最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析> ...

  7. 高斯消元法求解方程组(要有python基础和线性代数的基础)

    本人这学期开的是一门数值分析课,老师要求用python写出实现某些算法的代码,当遇到第一个高斯消元法,印象深刻的是这个编程与以往的编程不一样,从这几点来讲:首先,我是在上这门课之前就将python的基 ...

  8. 数值分析(六):C++实现非奇异矩阵A的LU分解

    矩阵的LU分解是指非奇异矩阵A能够分解成单位下三角矩阵L和上三角矩阵U的乘的形式,这部分内容是高斯消元法章节讲解的内容,因为最近开始复习数值分析这门功课,所以又回头来开始学习,于是就碰到了矩阵A的LU ...

  9. python数值分析算例_只要一杯秋天的奶茶,就能学会Python数值分析(2)

    只要一杯秋天的奶茶,就能学会Python数值分析(2) 上节(https://www.jianshu.com/p/671a94ce586b)说到高斯消元法,今天从高斯列主元消元法开始,拓展到线性方程组 ...

最新文章

  1. ATS 5.3.0中利用grep得到纯净的配置文件
  2. 转-Redis学习手册(目录)
  3. opengl之自动纹理
  4. Android draw9patch点九图常识
  5. [vim]高亮查找匹配
  6. Unbuntu 自动重启MySQL
  7. 图片流写出 并带数据_IO流阶段---字符流
  8. 了解css中伪元素 before和after的用法
  9. 深度剖析JDK动态代理机制
  10. mysql多数据库_mysql 多端口及主从数据库
  11. Bitmap缩放(二)
  12. Servlet教程第7讲笔记
  13. 双十二大前端工程师读书清单
  14. 前端生成小程序二维码
  15. 深度时空网络、记忆网络与特征表达学习在 CTR 预估中的应用
  16. SIFT原作者David Lowe主页
  17. iCollections—桌面管理工具
  18. 利用Wifidog实现微信wifi连接
  19. 如何简单粗暴的干掉2345主页
  20. 自制拖把机器人_懒出新境界:可以自己洗拖布的机器人

热门文章

  1. qmp32下载_U盘歌曲播放顺序调整教程
  2. 测序是测量你的遗传信息
  3. 使用tf.data.Dataset加载numpy数据
  4. 一文掌握Pandas可视化图表
  5. 片上总线Wishbone 学习(三)Wishbone互联的类型
  6. SpringBoot + Element UI 楠橘星后台管理系统一键打包部署教程文档
  7. 游戏服务器稳定ping值,网友玩游戏时Ping值超过了2亿!
  8. 广东9月计算机二级考试时间,2021年9月广东计算机等级考试时间:9月25日-27日
  9. SSM毕设项目校园设备巡检管理系统04b46(java+VUE+Mybatis+Maven+Mysql)
  10. PM第1步:产品需求文档