Numpy入门学习之(二)linalg库----向量范数、矩阵范数、行列式、矩阵逆、幂

老师课堂总结,请勿转载

Numpy中的核心线性代数工具

numpy.linalg模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。

求解矩阵的范数

在实数域中,数的大小和两个数之间的距离是通过绝对值来度量 的。在解析几何中,向量的大小和两个向量之差的大小是 “长度 ” 和 “ 距 离 ”的概念来度量的。为了对矩阵运算进行数值分析,我们需要对向量 和矩阵的 “大小 ”引进某种度量。范数是绝对值概念的自然推广。

"范数 "是对向量和矩阵的一种度量,实际上是二维和三维 向量长度概念的一种推广.

向量范数


范数理论的一个小推论告诉我们:ℓ1≥ℓ2≥ℓ∞

矩阵的范数


范数汇总

转载地址http://blog.csdn.net/u011361880/article/details/73527229


矩阵行列式


方阵的逆矩阵




伴随矩阵


逆矩阵运算性质


代码


 
 
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Jul 29 15:33:39 2017
  4. @author: Administrator
  5. """
  6. import numpy as np
  7. print( "###########向量范数#########")
  8. print( "向量为:",[ 1, 5, 6, 3, -1])
  9. print( "1范数:",np.linalg.norm([ 1, 5, 6, 3, -1],ord = 1), "向量元素绝对值之和")
  10. print( "2范数:",np.linalg.norm([ 1, 5, 6, 3, -1],ord = 2), "向量元素绝对值的平方和再开方")
  11. print( "无穷范数:",np.linalg.norm([ 1, 5, 6, 3, -1],ord = np.inf), "所有向量元素绝对值中的最大值")
  12. print( "###########矩阵范数#########")
  13. a = np.arange( 12).reshape( 3, 4)
  14. print( "矩阵a为:")
  15. print(a)
  16. print( "F范数",np.linalg.norm(a,ord = 'fro'), "矩阵元素绝对值的平方和再开平方")
  17. print( "1范数",np.linalg.norm(a,ord = 1), "列和范数,即所有矩阵列向量绝对值之和的最大值")
  18. print( "2范数",np.linalg.norm(a,ord = 2), "谱范数,即ATA矩阵的最大特征值的开平方")
  19. print( "无穷范数",np.linalg.norm(a,ord = np.inf), "行和范数,即所有矩阵行向量绝对值之和的最大值")
  20. print( "###########行列式#########")
  21. a = np.arange( 1, 17).reshape( 4, -1)
  22. print( "矩阵a为")
  23. print(a)
  24. print( "a的行列式为:",np.linalg.det(a))
  25. print( "###########逆矩阵np.linalg.inv()#########")
  26. a = np.array([[ 1, -1],[ 1, 1]])
  27. b = np.array([[ 1/ 2, 1/ 2],[ -1/ 2, 1/ 2]])
  28. print( "矩阵相乘为单位矩阵E:")
  29. print(np.dot(a,b))
  30. print( "###########伴随矩阵#########")
  31. print(a)
  32. det_a = np.linalg.det(a)
  33. print( "a的行列式为:",det_a)
  34. inv_a = np.linalg.inv(a) ####求a的逆矩阵
  35. print( "a的逆矩阵为:",inv_a)
  36. print( "a的伴随矩阵为:")
  37. bansui = det_a*inv_a
  38. print(bansui)
  39. print( "验证:",np.dot(bansui,a))
  40. print( "###########A与A逆行列式#########")
  41. a = np.random.rand( 5, 5)
  42. inv_a = np.linalg.inv(a)
  43. det_a = np.linalg.det(a)
  44. det_inv_a = np.linalg.det(inv_a)
  45. print(det_a*det_inv_a)
  46. print( "###########矩阵的幂matrix_power()#########")
  47. a = np.random.rand( 3, 3)
  48. print(a)
  49. print(np.linalg.matrix_power(a, 2))
  50. print( "###########求解AXB=C?#########")
  51. a = np.array([[ 1, 2, 3],[ 2, 2, 1],[ 3, 4, 3]])
  52. b = np.array([[ 2, 1],[ 5, 3]])
  53. c = np.array([[ 1, 3],[ 2, 0],[ 3, 1]])
  54. det_a = np.linalg.det(a)
  55. det_b = np.linalg.det(b)
  56. inv_a = np.linalg.inv(a)
  57. inv_b = np.linalg.inv(b)
  58. if det_a != 0:
  59. if det_b != 0:
  60. x = np.dot(np.dot(inv_a,c),inv_b)
  61. print(x)

 
 
  1. ###########向量范数#########
  2. 向量为: [ 1, 5, 6, 3, -1]
  3. 1范数: 16.0 向量元素绝对值之和
  4. 2范数: 8.48528137424 向量元素绝对值的平方和再开方
  5. 无穷范数: 6.0 所有向量元素绝对值中的最大值
  6. ###########矩阵范数#########
  7. 矩阵a为:
  8. [[ 0 1 2 3]
  9. [ 4 5 6 7]
  10. [ 8 9 10 11]]
  11. F范数 22.4944437584 矩阵元素绝对值的平方和再开平方
  12. 1范数 21.0 列和范数,即所有矩阵列向量绝对值之和的最大值
  13. 2范数 22.4092981633 谱范数,即ATA矩阵的最大特征值的开平方
  14. 无穷范数 38.0 行和范数,即所有矩阵行向量绝对值之和的最大值
  15. ###########行列式#########
  16. 矩阵a为
  17. [[ 1 2 3 4]
  18. [ 5 6 7 8]
  19. [ 9 10 11 12]
  20. [ 13 14 15 16]]
  21. a的行列式为: 4.73316543133e-30
  22. ###########逆矩阵np.linalg.inv()#########
  23. 矩阵相乘为单位矩阵E:
  24. [[ 1. 0.]
  25. [ 0. 1.]]
  26. ###########伴随矩阵#########
  27. [[ 1 -1]
  28. [ 1 1]]
  29. a的行列式为: 2.0
  30. a的逆矩阵为: [[ 0.5 0.5]
  31. [ -0.5 0.5]]
  32. a的伴随矩阵为:
  33. [[ 1. 1.]
  34. [ -1. 1.]]
  35. 验证: [[ 2. 0.]
  36. [ 0. 2.]]
  37. ###########A与A逆行列式#########
  38. 1.0
  39. ###########矩阵的幂matrix_power()#########
  40. [[ 0.66673632 0.24542188 0.24331174]
  41. [ 0.81223569 0.41511886 0.20157493]
  42. [ 0.07107783 0.64497704 0.29675985]]
  43. [[ 0.66117181 0.42244142 0.28390083]
  44. [ 0.89304891 0.50167529 0.34112338]
  45. [ 0.59235659 0.47658948 0.23537168]]
  46. ###########求解AXB=C?#########
  47. [[ -2. 1.]
  48. [ 10. -4.]
  49. [ -10. 4.]]



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值