码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-05-13 11:02:24      阅读:456      评论:0      收藏:0      [点我收藏+]

标签:问题   14.   run   矩阵运算   .so   www   遇到   参数   文献   

一 要点

  • 假定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 = b

A = [[2,1,2],
     [3,1,0],
     [1,1,-1]];
b = np.transpose([-3,5,-2])# 转置
#[or] b = np.transpose(np.array([-3,5,-2]))# 转置

# 求解未知参数矩阵X
X = 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 np

A = [
    [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 为 未知参数X
X = 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.]]

三 推荐文献

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

标签:问题   14.   run   矩阵运算   .so   www   遇到   参数   文献   

原文地址:https://www.cnblogs.com/johnnyzen/p/10855208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!