线性代数中的线性方程组(chapter 1)
线性代数中的线性方程组
第一章从线性方程组的角度,通过解线性方程组,开始解释数学矩阵,以及和线性代数的联系
线性方程组
形如\(a_1x_1+a_2x_2+a_3x_3+....+a_nx_n=b\),其中\(a_1...a_n\)为实数或者复数。
对于一个线性方程组,所有可能的解称为他的解集,如果两个方程组,具有相同的解集,那么我们说这两个方程组等价的。
对于一个线性方程组,他的解有三种情况:
- 无解
- 有唯一解
- 有无穷多的解
如果对于一个线性方程组,他有唯一解或者无穷多个解,我们称它是相容的,若无解,我们称他是不相容的。
对于一个线性方程组求解,先将它的变量隐藏起来,再将变量的每个系数写在对齐的一列中,产生的一个矩阵,我们称它为系数矩阵,将线性方程组右侧的常数加入矩阵中,我们得到了增广矩阵.
$
\begin{cases}
x_1-2x_2+x_3=0\\
2x_2+8x_3=8\\
-4x_1+5x_2+9x_3=9
\end{cases}
$ → $\left[ \begin{matrix} 1 & -2 & 1\\ 0 & 2 & 8\\ -4 & 5 & 9\end{matrix} \right]$ → $\left[ \begin{array}{ccc|c} 1 & -2 & 1 & 0\\ 0 & 2 & 8 & 9\\ -4 & 5 & 9 & -9\end{array} \right]$
行化简解法和阶梯型矩阵
线性方程组的解法:
对于解一个线性方程组,通常的做法是将其化为等价的更简单的线性方程组。(也是基本思路)。在上一小节中,将一个线性方程组的系数提出化为了增广矩阵。接下来将采用行化简算法,去将一个矩阵先变化为与原矩阵等价的阶梯形矩阵,再变成简化行阶梯形矩阵。
那么,什么是阶梯形矩阵,什么又是简化行阶梯形矩阵?
首先先明确2个意义:
1.矩阵中的非零行和列是指,矩阵中至少包含一个非零元素的行或列。
2.非零行的先导元素是指该行最左边的非零元素。
满足以下三个条件的矩阵定义为阶梯形:
1.所有非零行在所有全零行的上面(即全零行都在矩阵的底部)。
2.非零行的先导元素比上面行的先导元素更靠右。
3.先导元素所在列,在该先导元素下面的元素都是零。
还满足以下两个条件的阶梯型矩阵可称为简化阶梯形:
4.所有非零行的先导元素为1。
5.所有非零行仅有先导元素。
(∎表示先导元素,*表示可以是任意数字)
线性方程组的解:
对一个增广矩阵运用行化简算法时,通过将其化为等价的简化阶梯形后,可以得到线性方程组解题的一种显示表达法,例如某一个线性方程组的增广矩阵已经化为简化阶梯形
$\left[ \begin{matrix} 1 & 0 & -5 & 1\\ 0 & 1 & 1 & 4\\ 0 & 0 & 0& 0\end{matrix} \right]$
,因为增广矩阵有4列所以有3个未知数,对应线性方程组为
$\begin{cases}
x_1-5x_3=1\\
x_2+x_3=4\\
0 = 0
\end{cases}$
,对应主元列的变量$x_1$和$x_2$被称为基本变量,$x_3$被称为自由变量,当一个线性方程组是相容的,它的解集可以用显示表达,只要把方程的简化形式解出来,用自由变量表示基本变量即可。由于简化阶梯型使每个基本变量仅包含在一个方程中这是很容易解出的。
例如上面的,可得
$\begin{cases}
x_1=1-5x_3\\
x_2=4-x_3\\
x_3 为自由变量
\end{cases}$
对于自由变量$x_3$,可以是任意的值,当他的值确定后,根据前两个方程即可确定$x_1$和$x_2$。上面例子给出的解又叫通解,因为他给出了所有解的显式表达。
存在唯一性定理:
线性方程组相融的充要条件是,增广矩阵的最右列不是主元列就是说增广矩阵的阶梯形没有形如\(\left[ \begin{matrix} 1 & ... & 0 & b\end{matrix} \right]\),b ≠ 0的行。若线性方程组相容,它的解集可能有两种情况:①没有自由变量时,有唯一解;②如果至少有一个自由变量有无穷多解
总结一下,对于求解一个线性方程组,可分为以下5个步骤:
1. 写出该方程的增广矩阵
2. 应用行化简算法把增广矩阵化为阶梯型,确定方程组是否有解,有解则进行下一步
3. 继续行化简算法得到它的简化阶梯形
4. 写出简化阶梯形对应的方程组
5. 将方程改写为用自由变量表示基本变量的形式
向量方程
线性方程组的重要性质都可以用向量的概念与符号来描述,该节通过将线性方程组与向量方程联系起来,解释其中的相关。
\(R\)2中的向量:
仅含一列的矩阵称为列向量,或简称向量如w = \(\left[ \begin{matrix} w_1\\ w_2\end{matrix} \right]\),\(w_1\)和\(w_2\)是任意实数,所有2个元素的向量的集记作\(R\)2,其中R表示向量中的元素是实数,\(2\)代表一个向量包含2个元素,所有元素都为0的向量记作\(0\),对于向量的加减以及标量乘法运算的性质,再初中已学过,无需赘述。
线性组合:
给定\(R\)n中的向量\(v_1\),\(v_2\),\(v_3\)......\(v_k\)和标量\(c_1\),\(c_2\),\(c_3\)......\(c_k\),向量
\(y\) = \(c_1v_1\) + \(c_2v_2\) + \(c_3v_3\) + ...... + \(c_kv_k\)
被称作向量\(v_1\),\(v_2\),\(v_3\)......\(v_k\)以\(c_1\),\(c_2\),\(c_3\)......\(c_k\)权的线性组合,权可以是任意实数,包括零
现在我们回到前面2节中的存在性问题上,例如,给出向量\(a_1\) = \(\left[ \begin{matrix} 1\\ -2\\ -5\end{matrix} \right]\),\(a_2\) = \(\left[ \begin{matrix} 2\\ 5\\ 6\end{matrix} \right]\),\(b\) = \(\left[ \begin{matrix} 7\\ 4\\ -3\end{matrix} \right]\),需要确定\(b\)是否可以写成\(a_1\)和\(a_2\)的线性组合,也就是说,是否存在权使得向量方程 \(b\) = \(x_1a_1\) + \(x_2a_2\) 成立。
根据向量的加法和标量乘法,可将向量方程写作方程组
$\begin{cases}
x_1+x_2 = 7\\
-2x_1+5x_2 = 4\\
-5x_1+6x_2 = -3
\end{cases}$
对上面的方程组运用行化简算法,来解出结果
$\left[ \begin{matrix} 1 & 2 & 7\\ -2 & 5 & 4\\ -5 & 6 & -3\end{matrix} \right]$ ~ $\left[ \begin{matrix} 1 & 2 & 7\\ 0 & 9 & 18\\ 0 & 16 & 32\end{matrix} \right]$ ~ $\left[ \begin{matrix} 1 & 2 & 7\\ 0 & 1 & 2\\ 0 & 1 & 2\end{matrix} \right]$ ~ $\left[ \begin{matrix} 1 & 0 & 3\\ 0 & 1 & 2\\ 0 & 0 & 0\end{matrix} \right]$
解出$x_1$ = 3和$x_2$ = 2,因此$b$就是$a_1$和$a_2$的线性组合,权为$x_1$ = 3和$x_2$ = 2,这样的步骤是为了强行通过线性方程组作为中介联系,注意看上面的例子可以看住通过线性方程组得到的增广矩阵,就是$\left[ \begin{matrix} a_1 & a_2 & b\end{matrix} \right]$。
综合上面的例子的出结论:向量方程 \(x_1a_1\) + \(x_2a_2\) + ...... + \(x_na_n\) = \(b\)和增广矩阵为\(\left[ \begin{matrix} a_1 & a_2 & ... & b\end{matrix} \right]\)有相同的解集。当且仅当有解是,等式成立。
Span{\(v_1\),\(v_2\),\(v_3\)......\(v_k\)}:
线性代数的一个主要思想就是研究可以表示某一固定向量集合{\(v_1\),\(v_2\),\(v_3\)......\(v_k\)}的线性组合的所有向量,用Span{\(v_1\),\(v_2\),\(v_3\)......\(v_k\)}表示,称为由\(v_1\),\(v_2\),\(v_3\)......\(v_k\)生成的所有子集,也就是说Span{\(v_1\),\(v_2\),\(v_3\)......\(v_k\)}就是所有形如\(c_1v_1\) + \(c_2v_2\) + \(c_3v_3\) + ...... + \(c_kv_k\)的向量的合集合,判断一个向量\(b\)是否属于Span{\(v_1\),\(v_2\),\(v_3\)......\(v_k\)},就是判断\(c_1v_1\) + \(c_2v_2\) + \(c_3v_3\) + ...... + \(c_kv_k\) = \(b\) 是否有解。
矩阵方程\(Ax = b\)
线性代数的一个基本思想就是把向量的线性组合看作是矩阵与向量的积,在本节中将上一节的某些概念用新的方法表述。
定义:
若\(A\)是 \(m×n\)的矩阵,他的各列为\(a_1,...,a_n\)。若\(x\)是\(R^n\)中的向量,则\(A\)于\(x\)的积,记为\(Ax\),就是\(A\)的各列以\(x\)中对应元素为权的线性组合,即
$Ax = \left[ \begin{matrix} a_1 & a_2 & ... & a_n\end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \\ ... \\ x_n\end{matrix} \right] = x_1a_1 + x_2a_2 + ...... + x_na_n$
形如上面的式子,称为矩阵方程,注意$Ax$仅当$A$的列数等于$x$中的元素个数时才有定义。
到这里我们不难发现对于一个线性方程组,可以将其转换成向量方程,或是矩阵方程,据此我们定义。
定义:
若\(A\)是 \(m×n\)的矩阵,他的各列为\(a_1,...,a_n\)。而\(b\)属于\(R^n\),则矩阵方程
$Ax = b$
与向量方程
$x_1a_1 + x_2a_2 + ...... + x_na_n = b$
有相同的解集,他又与增广矩阵为
$\left[ \begin{matrix} a_1 & a_2 & ... & b\end{matrix} \right]$
的线性方程组有相同的解集。
线性代数中的线性方程组(chapter 1)的更多相关文章
- 利用Python学习线性代数 -- 1.1 线性方程组
利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...
- matlab中求解线性方程组的rref函数
摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ...
- 用 python 解决线性代数中的矩阵运算
用 python 解决线性代数中的矩阵运算 矩阵叉乘 矩阵求逆 矩阵转置 假定AX=B,求解未知矩阵X 矩阵的行列式值|matrix| 未完待续..... import sys from PyQt5. ...
- 线性代数及其应用 (David C.Lay, Steven R.Lay 著)
第1章 线性代数中的线性方程组 (已看) 介绍性实例 经济学与工程中的线性模型 1.1 线性方程组 1.2 行化简与阶梯形矩阵 1.3 向量方程 1.4 矩阵方程Ax=b 1.5 线性方程组的解集 1 ...
- PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
前言 MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶.也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作. 虽然PYTHON和众 ...
- matlab 求解线性方程组之LU分解
线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...
- 《Numerical Methods》-chaper7-解线性方程组的直接方法和最小二乘问题
基于我们在线性代数中学习过的知识,我们知道解线性方程组本质上就是Gauss消元,也就是基于增广矩阵A的矩阵初等变换.关于数学层面的内容这里不做过多的介绍,这里的侧重点是从数值计算的角度来看这些常见的问 ...
- 《Linear Algebra and Its Applications》-chaper1-向量方程、矩阵方程和线性方程组
向量: 向量的基本运算:向量的运算最基本的一件事情,就是基于它n个分量上进行,即对于两个分量的向量a = <a1,a2>,b = <b1,b2>,有a + b = <a1 ...
- 线性代数笔记10——矩阵的LU分解
在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...
随机推荐
- Redis常用命令(4)——List
BLPOP 格式:BLPOP key [key ...] timeout 作用:从列表左侧弹出元素,超时时间为timeout,单位为秒.如果timeout为0则一直阻塞直到列表中有元素.如果同时操作多 ...
- python数据类型之set(集合)
set集合 关注公众号"轻松学编程"了解更多. 1.概述 set与dict类似,但set是一组key的集合,与dict的区别在于set不存储value. 本质:无序且无重复元素的集 ...
- LWJGL3的内存管理,第三篇,剩下的两种策略
LWJGL3的内存管理,第三篇,剩下的两种策略 上一篇讨论的基于 MemoryStack 类的栈上分配方式,是效率最高的,但是有些情况下无法使用.比如需要分配的内存较大,又或许生命周期较长.这时候就可 ...
- 数据结构 - 二叉树的遍历(递归VS非递归)
import java.util.LinkedList; public class BinaryTree { public static void main(String[] args) { int ...
- 题解 AT3877 【[ARC089C] GraphXY】
参考的博客 在[有趣的思维题]里看到了这道题. 题意: 给出一个\(A\times B\)的矩阵,其中第i行第j列元素为\(d_{i,j}\),试构造一个有向图,满足: 有向图点数\(\le 300\ ...
- TRUNCATE 有约束的表
在有外键约束的情况下,truncate 表时,会报错, 我们可以设置外键检测为flase,执行完truncate命令后,再启用 SET foreign_key_checks = 0;TRUNCATE ...
- .NET必知的EventCounters性能指标监视器
在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具dotnet-counters而另一个是代码级别的EventListener. 使用dotnet-counters dotnet- ...
- 强迫自己学习Jquery 最喜欢的hitch函数
用过dojo的人都知道hitch. 通过绑定一个函数的上下文得到一个新函数,当然还能绑定参数 Jquery里没有这个功能,实在太不方便了. 这是我不喜欢用Jquery的第一原因,第二原因是Jquery ...
- C#调用pyd
python打包成pyd在本篇博客不多叙述,请读者自行百度,本篇博客主要讲解在C#中如何调用pyd以及遇到的一些问题如何解决. 1.安装pythonnet pythonnet是一个强大的工具包,用于C ...
- C++之父:精通C++很难,但你一天之内就能学习使用C++
精通C++听起来好像就是一个笑话.为什么C++比别的语言难学那么多?其实这基本上是因为C++之父Bjarne Stroustrup 说过的一句话"我特别的讨厌语言的设计者把自己的喜好强加给用 ...