Chapter 2. Solving Linear Equations (Part 2)

2.3 elimination using matrices

消元法解线性方程组,对于 3by3 的例子来说,过程还是能够描述清楚。但是遇到更大的方程组时,有太多的步骤了。所以把消元和矩阵结合起来,用更加简洁的形式来描述消元的所有步骤。

(1)the matrix form of one elimination step

还是从简单的例子出发,Ax=b

242493237x1x2x3=2810

按照消元法,第一步我们要做的是:
subtract 2 times the first equation from the second equation(第二行减去第一行的两倍)
对于方程组右边的b来说,变成了:

b=2810bnew=2410

这一步减法用矩阵来做, bnew=Eb ,这个矩阵E就叫它消元矩阵。
那么E的庐山真面目,究竟如何呢?
铛当当当!

E=120010001

对于普通形式的 b=b1b2b3 ,

那么 Eb=120010001b1b2b3=b1b22b1b3

那么看看这个E有啥特点呢?

I=100010001E=120010001

其实就是单位矩阵的第二行减去2倍的第一行,得到了这个E
我们也把这种单位矩阵经过一次“变换”后得到的矩阵叫做elementary matrix(初等矩阵)。初等矩阵的记号为 Eij ,表示的是:单位矩阵的第j行减去一定倍数的第i行。(在这里指的是行变换情况下 Eij 的含义)

(2)matrix multiplication(矩阵乘法)

在(1)中,我们已经发现通过 Eb 的运算,能够达到我们的要求,那么对于矩阵A来说,显然是: EA
那么这里就要讲到矩阵之间的乘法(因为前面提到的都是Ax=b形式,即矩阵和向量间的乘法),例如:

AB=A[b1b2b3]=[Ab1Ab2Ab3]

将矩阵的乘法看作矩阵AB列向量的乘法 的组合。

(3)the matrix Pij for a row exchange

在(1)中提到了消元矩阵,实现消元法方法中的核心步骤。那么还有一种情况,就是主元位置出现了0,这时候我们要把主元位置非0的行与其做交换(如果存在符合要求的row),那么相应的提出了permutation matrix(置换矩阵)。
比如要交换第二行和第三行,那么:

P23=100001010

同样的,置换矩阵也是一种初等矩阵。

(4)the augmented matrix

对于方程组Ax=b,我们定义了一个矩阵 [Ab] ,叫做增广矩阵。

2.4 rules for matrix operations

矩阵的运算无非是加法,数乘,矩阵之间的乘法。

A matrix is a rectangular array of numbers or “entries”. When A has m rows and n columns , it is an “m by n” matrix.

The entry in row i and column j is called aij or A(i,j).

对于加法和数乘都比较好理解,要讲一下的是矩阵之间的乘法:
比如AB,那么A的列就必须和B的行数相同。
举一个特殊的例子:
“1 by n” multiples “n by 1”,得到的结果是一个”1 by 1”的矩阵,其实也就是一个数啦,这就叫做点积
那么对于一般形式的AB来说,算出来的矩阵的每个元素,都可以看作是一个点积:
The entry in row i and column j of AB is (row i of A) (column of j)

这里还要举一个特殊的例子:
“n by 1” multiples “1 by n”,得到”n by n”的矩阵,这种列向量和行向量之间的矩阵乘法叫做外积,上面提到的点积我们也叫内积。

(1)the laws for matrix operations

(2)block matrices and block multiplication

2.5 inverse matrices

definition: the matrix A is invertible if there exists a matrix A1 such that

A1A=I and AA1=I

想一想,为什么要搞个逆矩阵这种概念呢?
因为比如我们解方程组的时候, Ax=b (前提A是一个方阵),如果在两边都乘上一个矩阵B,满足 AB=I ,那么等式就变成了 Ix=Bb ,因为 Ix=x ,要是已知B,然后和b相乘,x就求出来了?!所以现在问题就转移到,这个B长什么样?
因为 AB=I ,所以我们给这个B下了个定义,取个名字叫做逆矩阵。

(1)the inverse of a product AB

(AB)1=B1A1

(2)calculating A1 by Gauss-Jordan elimination

以3 by 3 的矩阵作为例子:

A=210121012

构造一个增广矩阵 [AI]=210121012100010001
接着,开始进行行变换,使得增广矩阵左半边的 A 变成I,我们在2.3讲到,其实行变换消元的过程可以用矩阵乘法来表示,那么想一想,我们究竟用了一个什么矩阵使得 A 变成了I
对了,就是 A1 ,当: AI IA1

也就是:
Gauss-Jordan : Multiply [AI] by A1 to get [IA1]
对于上述的例子,最终变为:
[IA1]=10001000134121412112141234

(3)singular versus invertible

什么样的矩阵有逆矩阵?
A1 exists when A has a full set of n pivots.

### 回答1: 我可以给你一个解决线性方程的代码例子:#include <iostream>using namespace std;int main(){ int a, b, c; // a, b, c are coefficients of the equation int x, y; // x and y are the variables of the equation cout << "Enter the coefficients a, b, c of the equation: "; cin >> a >> b >> c; x = (c - b) / a; y = (a * x) + b; cout << "The solution of the equation is x = " << x << " and y = " << y << endl; return 0; } ### 回答2: 当然可以!下面是一个用Python编写的解线性方程组的代码示例: ```python import numpy as np def solve_linear_equations(coefficients, constants): try: solution = np.linalg.solve(coefficients, constants) return solution except np.linalg.LinAlgError: return "无解或有无限多解" # 示例方程组为: # 2x + 3y = 8 # 4x - 5y = -7 # 系数矩阵 coefficients = np.array([[2, 3], [4, -5]]) # 常数矩阵 constants = np.array([8, -7]) # 求解方程组 result = solve_linear_equations(coefficients, constants) # 输出解 print("解为:") print("x =", result[0]) print("y =", result[1]) ``` 以上代码使用了NumPy库中的函数`np.linalg.solve()`来求解线性方程组。在示例方程组中,使用了一个2x2的系数矩阵和一个常数矩阵。函数`solve_linear_equations()`返回方程组的解(如果有解),如果方程组无解或有无限多解,则返回相应的提示。 运行代码后,输出的解为: ``` 解为: x = 3.0714285714285716 y = 0.8571428571428568 ``` 这说明方程组的解为x ≈ 3.071和y ≈ 0.857。 ### 回答3: 当然可以,以下是一个用Python编写的解线性方程组的代码示例: ``` import numpy as np # 创建系数矩阵A和常数向量b A = np.array([[2, 3], [4, -1]]) b = np.array([9, 5]) # 求解线性方程组 Ax = b x = np.linalg.solve(A, b) # 输出解 print("解为:x =", x) ``` 这个代码示例使用了NumPy库中的`linalg.solve()`函数来求解线性方程组。首先,我们创建了一个2x2的系数矩阵A和一个长度为2的常数向量b。然后,使用`solve()`函数解方程组Ax = b,并将解存储在变量x中。最后,输出解x的值。 此代码示例可以用于解任意大小的线性方程组。只需将系数矩阵A和常数向量b替换为相应的值即可。这样,您可以使用该示例来解决其他线性方程组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值