负基础也能搞懂之“Gauss消元法的MATLAB实现”

前言

我这个人是比较懒的,不太愿意写blog。但是有一天看到一篇文章说美国大学的教授做过一个实验,实验的内容是比较两组通过不同教育方式下的学生的考试成绩。教学中,教授给其中一组学生按照平常的教学方法给学生布置课后作业;另一组学生的任务是把学到的东西讲的别人听。不出所料,那组把所学的知识讲给别人听的学生,在最后考试的时候得分普遍比另一组的要高。因为在把知识讲给别人听的时候,大脑会构建出比自己一个人想时更清晰的逻辑;那些学生因为强化了知识点之间的因果联系,对知识点的掌握也就更加牢靠,因此考试分数自然要比那些只完成家庭作业的孩子的要高。因此,本着提高自我,巩固所学的目的,写下人生中第一篇技术blog;同时也希望有需要的朋友可以参考学习,大佬们能指出我的不足。好了,废话不多说,直接进入正题。

问题描述

用Gauss消元解下列方程组:

5x1+2x2+x3=8
2x1+8x2-3x3=21
x1+3x2-6x3=1

可能需要的知识

Q:什么是Gauss消元法?
A:想必大家从小学就学会了解二元一次方程组。但是当方程的数量大于3的时候呢,用一般的方法就不便于求解了吧。Gauss消元法就是未知数的系数化成上三角矩阵的形式,然后从最后一个未知数依次往上求解。对于这块知识不了解的同学可以手算一下上面给出的方程组,体会一下Gauss消元法的过程。

Q:什么是上三角矩阵?
A:上三角矩阵是矩阵的一种,详见上面的百度百科链接。矩阵说白了就是为了书写、求解方便引入的一种表示符号,它就是方程组的各系数的集合。例如上述方程组,提取各个方程组的系数,写成系数矩阵[5,2,1;2,8,-3;1,-3,-6](其中分号代表换行);等号右边的常数项写成一个列矩阵(只有一列的矩阵)[8,21,1]T(式中的T表示转置,本来列矩阵要竖着写的,但是为了书写方便,就横着写,然后加了一个转置符号T)。把系数矩阵和列矩阵一结合就变成了一个增广矩阵。

Q:什么是增广矩阵
A:这个比较简单,就不多解释了,自行看百度百科哈~

Q:什么是矩阵的秩
A:简单来说,如果矩阵的某一行的系数不全为0,那么秩就+1.

Q:如何判断方程组的解的个数或者是否有解?
A:1.如果矩阵化简后,发现有等号左边(系数矩阵)为0,而等号右边(列矩阵/常数矩阵)不为0的情况,那么这个方程组无解。2.如果矩阵化简后,发现等号左边(系数矩阵)不为0,而等号右边(列矩阵/常数矩阵)也不为0,那么这个方程组有解。但是还要分两种情况:矩阵的秩是否等于未知数个数?(1)如果矩阵的秩等于未知数个数,则有唯一解;(2)如果矩阵的秩小于未知数个数,则有无穷多个解。

这些都是线性代数中矩阵的基础知识,相信小伙伴们在手算过上面的方程组之后就会有很深的体会啦~

MATLAB代码、注释与分析

分析说明

很多初次接触代码的小伙伴们看到下面一长串代码可能就一下懵逼了——这么长!!!不要慌,容我细细道来,你就知道有多简单了。

首先,必须声明一点,MATLAB实在是太好用了,比起什么C语言、C++,简单爆了!Mathworks公司出了一份导学教程,只要两个小时就能轻松入门MATLAB,点击这里,选择“MATLAB入门之旅(中文)”进入课程。当然你也可以分次完成,不一定傻坐着立马花两个小时学完哦。

然后,我说下代码的结构。代码总体分为两个部分,一个是消元过程,一个是求解回代过程。

消元过程

消元过程我用了三层for循环嵌套。初次接触编程的同学对循环嵌套可能和我一开始一样会有些恐惧,怎么想都想不明白,但是不要慌~在编写循环嵌套的时候我个人是从外往内写的。什么意思呢?就是你先写出第一个for循环,然后把配套的end先写好(注意:MATLAB中无论是for还是if都要有对应的end语句哦),把你这一层循环想要表达的意思或者语句都先写完,然后进入里面那个循环。在里面那个循环中,同理,按照上述的方法写完想要表达的语句,然后再嵌套下一个循环。

可能这么说还是有人不明白,上图吧!
这是第一个循环,我用*号表示你要写的语句

for
	*****
	*****
	*****
	*****
end

在你写完这层循环想要表达的意思之后,开始加入第二层for循环

for
	*****
	*****
	for
		*****
		*****
		*****
		
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值