线性代数Ax=b原理及工程上的应用
前言
线性代数在工程应用上十分广泛,在坐标系转换,深度学习,求解算法的优化解方面有着大量应用。因此掌握线性代数的基本理论,并且具有解决实际工程问题的能力尤为重要。
线性方程组解的情况
线性方程组的解的三种情况
- 适定方程组:存在唯一解
- 欠定方程组:存在多解。变量数<方程组数
- 超定方程组:无解。但可以求出近似解
二元方程组解的三种情况
超定二元方程组的解
{
x
1
+
x
2
=
1
x
1
−
x
2
=
3
−
x
1
+
2
x
2
=
−
3
\left\{\begin{matrix}x_{1}+x_{2}=1\\ x_{1}-x_{2}=3\\ -x_{1}+2x_{2}=-3\end{matrix}\right.
⎩
⎨
⎧x1+x2=1x1−x2=3−x1+2x2=−3
以上是无解的,即方程组不相容,但有近似解-----最小二乘解!
用线性代数数值解计算实际工程问题
对某一城市的交通流量分析:
节点A:
x
1
+
450
=
x
2
+
610
x_{1}+450=x_{2}+610
x1+450=x2+610
节点B:
x
2
+
520
=
x
3
+
480
x_{2}+520=x_{3}+480
x2+520=x3+480
节点C:
x
3
+
390
=
x
4
+
600
x_{3}+390=x_{4}+600
x3+390=x4+600
节点D:
x
4
+
640
=
x
1
+
310
x_{4}+640=x_{1}+310
x4+640=x1+310
列出方程组是:
{
x
1
−
x
2
=
160
x
2
−
x
3
=
−
40
x
3
−
x
4
=
210
x
4
−
x
1
=
−
330
\left\{\begin{matrix}x_{1}-x_{2}=160\\ x_{2}-x_{3}=-40\\ x_{3}-x_{4}=210\\ x_{4}-x_{1}=-330\end{matrix}\right.
⎩
⎨
⎧x1−x2=160x2−x3=−40x3−x4=210x4−x1=−330
按照
A
x
=
b
Ax=b
Ax=b的格式转化成矩阵形式
[
1
−
1
0
0
0
1
−
1
0
0
0
1
−
1
−
1
0
0
1
]
[
x
1
x
2
x
3
x
4
]
=
[
160
−
40
210
−
330
]
\begin{bmatrix}1 & -1 & 0 & 0\\ 0& 1 & -1 & 0\\ 0& 0 & 1 & -1\\ -1& 0& 0& 1\end{bmatrix}\begin{bmatrix}x_{1}\\ x_{2}\\ x_{3}\\ x_{4}\end{bmatrix}=\begin{bmatrix}160\\ -40\\ 210\\ -330\end{bmatrix}
100−1−11000−11000−11
x1x2x3x4
=
160−40210−330
在
A
x
=
b
Ax=b
Ax=b中,
b
b
b代表常数,这是线性方程组。注意:
A
A
A必须是方阵才能求逆。对其x的求解,可能出现无解,有解,多解的情况,不能用
x
x
x求
b
/
A
b/A
b/A
所以,可以用matlab相关函数求解,使用简化行列式的思路,对行矩阵变换!
b=[160;-40;210;-330];
U=rref([A,b]);
可以求出
U
U
U的简化行列式为:
U
=
[
1
0
0
−
1
330
0
1
0
−
1
170
0
0
1
−
1
210
0
0
0
0
0
]
U=\begin{bmatrix}1 & 0 & 0 & -1 & 330\\ 0 & 1 & 0 & -1 & 170\\ 0 & 0& 1 & -1 & 210\\ 0& 0 & 0 & 0 & 0\end{bmatrix}
U=
100001000010−1−1−103301702100
可以看出,简化后属于欠定方程,属于多解问题。
矩阵建模的方法
- 列出全部方程,构成方程组
- 将方程组变成矩阵
- 求解,用matlab
复杂的系统。列出的方程通常有两种形式。(注意,是列方程)
变量在等号左侧,常数项在右侧,整理出 A x = b Ax=b Ax=b
若有多种变量,将一个变量在等号左边,其余变量在右边
使其能变成:
X = Q X + P U X=QX+PU X=QX+PU矩阵
方程是 ( 1 − Q ) X = P U (1-Q)X=PU (1−Q)X=PU
传递函数是 W = X / U = i n v ( 1 − Q ) ∗ P W=X/U=inv(1-Q)*P W=X/U=inv(1−Q)∗P
A x = b Ax=b Ax=b的五种写法
- { x 1 + x 2 − x 3 = 7 2 x 1 − x 2 + 3 x 3 = 9 \left\{\begin{matrix}x_{1}+x_{2}-x_{3}=7\\ 2x_{1}-x_{2}+3x_{3}=9\end{matrix}\right. {x1+x2−x3=72x1−x2+3x3=9
- [ 2 1 − 1 2 − 1 3 ] [ x 1 x 2 x 3 ] = [ 7 9 ] \begin{bmatrix}2 & 1 & -1\\ 2 & -1 & 3\end{bmatrix}\begin{bmatrix}x_{1}\\ x_{2}\\ x_{3} \end{bmatrix}=\begin{bmatrix}7\\ 9\end{bmatrix} [221−1−13] x1x2x3 =[79]
- A x = b Ax=b Ax=b
- [ α 1 α 2 α 3 ] [ x 1 x 2 x 3 ] = [ 7 9 ] \begin{bmatrix}\alpha _{1} & \alpha _{2} & \alpha _{3}\end{bmatrix}\begin{bmatrix}x_{1}\\ x_{2}\\ x_{3}\end{bmatrix}=\begin{bmatrix}7\\ 9\end{bmatrix} [α1α2α3] x1x2x3 =[79]
- x 1 α 1 + x 2 α 2 + x 3 α 3 = b x_{1}\alpha _{1}+x_{2}\alpha _{2}+x_{3}\alpha _{3}=b x1α1+x2α2+x3α3=b
A x = B Ax=B Ax=B的解法
方法一:
X
=
B
/
A
X=B/A
X=B/A用逆矩阵来求(逆矩阵的前提是A是方阵)
逆矩阵的matlab函数是
V=inv(A)
A x = B Ax=B Ax=B可以求出 x = B / A x=B/A x=B/A
x=B*inv(A);
A
x
=
b
Ax=b
Ax=b, 非齐次线性方程组
A
x
=
0
Ax=0
Ax=0, 齐次线性方程组
方法二:
也可以用行列式来判断解是否存在:
判断线性方程组的解是否存在和唯一:Ax=0
A是系数矩阵,
∣
A
∣
≠
0
\left | A \right |\neq 0
∣A∣=0,解存在
在MATLAB中求行列式的值,用
det(A);
非齐次线性方程组Ax=b解存在且唯一的条件是
d
e
t
(
A
)
≠
0
det(A)\neq 0
det(A)=0
齐次线性方程组Ax=0有非0解的条件是
d
e
t
(
A
)
=
0
det(A)= 0
det(A)=0
A x = b Ax=b Ax=b三个不同角度讨论
- Ax=b 最简行列式变换,消元,求有,无,超定,欠定解,rref
- 把Ax当成A是列向量组,判断是否相关,证明超定方程的最小二乘解!
- 把A看成一个几何变换,把x域中图形变换到y域中去!
A
x
=
b
Ax=b
Ax=b变换后直线还是直线。
x
=
[
0
1
1
0
0
0
0
1
1
0
]
x=\begin{bmatrix} 0 &1 & 1 & 0 & 0\\ 0 & 0 & 1 & 1& 0 \end{bmatrix}
x=[0010110100]为顶点在(0,0),(1,0),(1,1),(0,1)的单位方块!
这就是变换矩阵的行列式的意义!
∣ A ∣ \left | A \right | ∣A∣是变换后面积的变化
在几何里面,因为矩阵的变换是Ax,所以
k
[
3
4
]
≠
[
4
5
]
k\begin{bmatrix}3\\ 4\end{bmatrix}\neq \begin{bmatrix}4\\ 5\end{bmatrix}
k[34]=[45]
不能实现平移等线性变换,所以引入齐次坐标系!(增加一维)
R
=
[
c
o
s
θ
−
s
i
n
θ
0
s
i
n
θ
c
o
s
θ
0
0
0
1
]
R=\begin{bmatrix}cos\theta & -sin\theta & 0\\ sin\theta & cos\theta & 0\\ 0& 0 & 1\end{bmatrix}
R=
cosθsinθ0−sinθcosθ0001
(旋转是绕原点的)
M
=
[
0
0
a
0
0
b
0
0
1
]
M=\begin{bmatrix}0 & 0 &a \\ 0& 0 & b\\ 0 & 0 & 1\end{bmatrix}
M=
000000ab1
先旋转后平移,是
R
∗
M
R*M
R∗M,不是
R
+
M
R+M
R+M
A x = b Ax=b Ax=b在几何学上的应用
- A x = y Ax=y Ax=y表示向量空间中x组成的图形经变换A后变换为向量空间y中的图形
- A x = y Ax=y Ax=y也表示坐标变换,A中各列为y坐标的基向量,用这关系可进行正反坐标变换。
eigshow(A);
在matlab中,可显示二维向量x沿单位圆转动时,经A左乘后在y平面上的形状。
x
−
y
x-y
x−y共线时,
y
=
A
x
=
λ
x
y=Ax=\lambda x
y=Ax=λx,
λ
\lambda
λ为特征值,
x
x
x为特征向量
在matlab中,求取特征值和特征向量为
[P,lambada]=eig(A);
QR分解的几何意义
QR分解可以看成分解出新的坐标系!
在matlab中,求取结果是
[Q,R]=qr(A);
A = [ v 1 , v 2 ] = [ − 1 6 2 8 ] A=[v_{1},v_{2}]=\begin{bmatrix}-1 & 6\\ 2& 8\end{bmatrix} A=[v1,v2]=[−1268]
作qr分解:
Q
=
[
−
0.4472
0.8944
0.8944
0.4472
]
,
R
=
[
2.2361
4.4721
0
8.9443
]
Q=\begin{bmatrix} -0.4472 & 0.8944\\ 0.8944& 0.4472 \end{bmatrix},R=\begin{bmatrix} 2.2361 & 4.4721\\ 0& 8.9443 \end{bmatrix}
Q=[−0.44720.89440.89440.4472],R=[2.236104.47218.9443]
从几何角度来看:
Q的第一列代表新成立的x坐标,第二列是垂直的y坐标!(即分解后的新坐标)