Python之Numpy:线性代数/矩阵运算,大一线性代数公式大全,一 要点假定AX=b


一 要点

假定AX=b,求解未知矩阵X 【线性代数中常遇到的运算问题】矩阵转置A^(T)矩阵的逆A^(-1)矩阵行列式的值|A|矩阵的秩 rank(A)矩阵的迹 trace(A)其它单位矩阵0向量/矩阵...

二 示例源码

2.1 求解AX=b中的未知参数矩阵X

import numpy as np# Hypothsis : A*X = bA = [[2,1,2],     [3,1,0],     [1,1,-1]];b = np.transpose([-3,5,-2])# 转置#[or] b = np.transpose(np.array([-3,5,-2]))# 转置# 求解未知参数矩阵XX = np.linalg.solve(A,b) # 方式一:直接使用numpy的solve函数一键求解#A_inv=np.linalg.inv(A) # 方式二:先求逆运算,再点积求值#X=np.dot(A_inv,b) # a.dot(b) 与 np.dot(a,b) 效果相同;but np.dot(a,b)与np.dot(b,a)效果肯定是不同的(线性代数/矩阵常识)print("方程组的解:\n",X);
# [output]方程组的解: [ 4.4 -8.2 -1.8]

2.2 利用最小二乘法拟合函数模型

原方程
\[ f(x) = a + bx^3 \]其法方程
\[ A^T A \begin{pmatrix} a \\ b \\ \end{pmatrix} = A^T y \]
即:
\[ \begin{pmatrix} a \\ b \\ \end{pmatrix} = \left( A^T A \right)^{-1} A^T y \]
import numpy as npA = [    [1,pow(-3,3)],    [1,pow(-2,3)],    [1,pow(-1,3)],    [1,pow(2,3)],    [1,pow(4,3)]];At =  np.transpose(A); # A的转置矩阵y = np.transpose([14.3,8.3,4.7,8.3,22.7]);# 令 (a ,b)^T 为 未知参数XX = np.dot(np.dot(np.linalg.inv(np.dot(At,A)),At),y)print(X);
# [output][ 10.67505325   0.13679816]

2.3 线性代数常用运算

print("原矩阵A:\n",A);print("原矩阵b:\n",b);print("转置矩阵A^T:\n",np.transpose(A)); # 转置print("矩阵的行列式值|A|:\n",np.linalg.det(A)); # 方阵的行列式值:|A|print("矩阵的迹trace(A):\n",np.trace(A)); print("矩阵的秩rank(A):\n",np.linalg.matrix_rank(A)); print("逆矩阵A^(-1):\n",np.linalg.inv(A)); #矩阵的逆运算(条件:矩阵A可逆(行列式值不为0)| 矩阵A为方阵)print("*"*30); # 分隔线print("N阶单位矩阵:\n",np.eye(4));
# [output]原矩阵A: [[2, 1, 2], [3, 1, 0], [1, 1, -1]]原矩阵b: [-3  5 -2]转置矩阵A^T: [[ 2  3  1] [ 1  1  1] [ 2  0 -1]]矩阵的行列式值|A|: 5.0矩阵的迹trace(A): 2矩阵的秩rank(A): 3逆矩阵A^(-1): [[-0.2  0.6 -0.4] [ 0.6 -0.8  1.2] [ 0.4 -0.2 -0.2]]**********************N阶单位矩阵: [[ 1.  0.  0.  0.] [ 0.  1.  0.  0.] [ 0.  0.  1.  0.] [ 0.  0.  0.  1.]]

三 推荐文献

Numpy - 菜鸟教程

Python之Numpy:线性代数/矩阵运算

评论关闭