简 介:

关键词矩阵分解QR

#mermaid-svg-biyMQ4sXX3c1a4oB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .error-icon{fill:#552222;}#mermaid-svg-biyMQ4sXX3c1a4oB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-biyMQ4sXX3c1a4oB .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-biyMQ4sXX3c1a4oB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-biyMQ4sXX3c1a4oB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-biyMQ4sXX3c1a4oB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-biyMQ4sXX3c1a4oB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-biyMQ4sXX3c1a4oB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-biyMQ4sXX3c1a4oB .marker.cross{stroke:#333333;}#mermaid-svg-biyMQ4sXX3c1a4oB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-biyMQ4sXX3c1a4oB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .cluster-label text{fill:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .cluster-label span{color:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .label text,#mermaid-svg-biyMQ4sXX3c1a4oB span{fill:#333;color:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .node rect,#mermaid-svg-biyMQ4sXX3c1a4oB .node circle,#mermaid-svg-biyMQ4sXX3c1a4oB .node ellipse,#mermaid-svg-biyMQ4sXX3c1a4oB .node polygon,#mermaid-svg-biyMQ4sXX3c1a4oB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-biyMQ4sXX3c1a4oB .node .label{text-align:center;}#mermaid-svg-biyMQ4sXX3c1a4oB .node.clickable{cursor:pointer;}#mermaid-svg-biyMQ4sXX3c1a4oB .arrowheadPath{fill:#333333;}#mermaid-svg-biyMQ4sXX3c1a4oB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-biyMQ4sXX3c1a4oB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-biyMQ4sXX3c1a4oB .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-biyMQ4sXX3c1a4oB .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-biyMQ4sXX3c1a4oB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-biyMQ4sXX3c1a4oB .cluster text{fill:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB .cluster span{color:#333;}#mermaid-svg-biyMQ4sXX3c1a4oB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-biyMQ4sXX3c1a4oB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

矩阵的迹
目 录
Contents
定义
性质
相关函数
QR分解
定义
分解举例
特殊矩阵
空矩阵
零矩阵
1矩阵
对角线矩阵
随机矩阵

§01 矩阵的迹


1.1 定义

  • 参考文献: Trace of a matrix

  对于方形矩阵 AAA 是一个 K×KK \times KK×K 的矩阵,它的,记为 trace(A)trace\left( A \right)trace(A) ,或者 tr(A)tr\left( A \right)tr(A) 定义为矩阵对角线元素累加和: tr(A)=∑k=1KAkktr\left( A \right) = \sum\limits_{k = 1}^K {A_{kk} }tr(A)=k=1∑K​Akk​ 。

  例如下面的矩阵:A=[215234010]A = \begin{bmatrix} \begin{matrix} 2 & 1 & 5\\2 & 3 & 4\\0 & 1 & 0\\\end{matrix} \end{bmatrix}A=⎣⎡​220​131​540​​⎦⎤​
  对应的迹:tr(A)=A11+A22+A33=2+3+0=5tr\left( A \right) = A_{11} + A_{22} + A_{33} = 2 + 3 + 0 = 5tr(A)=A11​+A22​+A33​=2+3+0=5

1.2 性质

tr(A+B)=tr(A)+tr(B)tr\left( {A + B} \right) = tr\left( A \right) + tr\left( B \right)tr(A+B)=tr(A)+tr(B)
tr(aA)=a⋅tr(A)tr\left( {aA} \right) = a \cdot tr\left( A \right)tr(aA)=a⋅tr(A)
tr(αA+βB)=α⋅tr(A)+β⋅tr(B)tr\left( {\alpha A + \beta B} \right) = \alpha \cdot tr\left( A \right) + \beta \cdot tr\left( B \right)tr(αA+βB)=α⋅tr(A)+β⋅tr(B)
tr(AT)=tr(A)tr\left( {A^T } \right) = tr\left( A \right)tr(AT)=tr(A)
tr(AB)=tr(BA)tr\left( {AB} \right) = tr\left( {BA} \right)tr(AB)=tr(BA)
AB=tr(AB)=tr(BA)AB = tr\left( {AB} \right) = tr\left( {BA} \right)AB=tr(AB)=tr(BA)

1.3 相关函数

1.3.1 调用函数形式

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *A = array([[1,2,3],[4,5,6],[7,8,9]])
print("trace(A): {}\n".format(trace(A)))
trace(A): 15

1.3.2 利用迹计算两个矩阵的内积

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *A = random.randn(15,8)
B = random.randn(15,8)C = A.T.dot(B)
print("trace(C): {}\n".format(trace(C)))
print("sum(A*B): {}\n".format(sum(A*B)))
trace(C): -9.301644996885578
sum(A*B): -9.301644996885576

§02 QR分解


2.1 定义

  对于矩阵 A,可以将其表示成: A=Q⋅RA = Q \cdot RA=Q⋅R 。其中 QQQ 是正交矩阵, RRR 是上三角矩阵。

2.2 分解举例

  分解一个5×3随机矩阵。

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *A = random.randn(5,3)
print("A: {}\n".format(A))
q,r = linalg.qr(A)
print("q: {}\n".format(q),"r: {}\n".format(r))
A: [[-1.86374906 -1.14492839  0.25085956]
[ 0.84097176  0.47786409  0.63319386]
[-1.2215861  -0.84129822 -0.68549399]
[ 0.14952506 -1.41793941 -0.28392431]
[-0.7815916  -1.56835016 -0.23617405]]
q: [[-0.74216383  0.11278664  0.58823716]
[ 0.33488351 -0.07192668  0.58284231]
[-0.48644801  0.02461369 -0.55319958]
[ 0.0595424  -0.8284496  -0.04030384]
[-0.31123773 -0.54329656  0.08134932]]
r: [[2.51123671 1.82270331 0.41592522]
[0.         1.84255932 0.32940707]
[0.         0.         0.88806271]]

  可以验证 q 矩阵是正交矩阵:

print("q.T.dot(q): {}\n".format(q.T.dot(q)))
q.T.dot(q): [[1.00000000e+00 3.84861072e-17 2.96333633e-16]
[3.84861072e-17 1.00000000e+00 8.91050746e-17]
[2.96333633e-16 8.91050746e-17 1.00000000e+00]]

§03 特殊矩阵


3.1 空矩阵

n = empty((5,5))
print("n: {}\n".format(n))
n: [[3.42247464e-316 3.42249708e-316 3.42250182e-316 3.06800300e-316
3.42251605e-316]
[3.42252079e-316 3.42252553e-316 3.42253028e-316 3.42253502e-316
3.06797454e-316]
[3.42253976e-316 3.42254925e-316 3.42250656e-316 3.42251130e-316
3.42248759e-316]
[3.06797928e-316 3.06800774e-316 3.06799351e-316 3.06798403e-316
3.06798877e-316]
[3.06794608e-316 3.06796505e-316 3.06796980e-316 3.42254451e-316
1.04878799e+248]]

3.2 零矩阵

n = zeros((5,5))
print("n: {}\n".format(n))
n: [[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]

3.3 1矩阵

n = ones((5,5))
print("n: {}\n".format(n))
n: [[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]

3.4 对角线矩阵

n = eye(3,4,0)
print("n:\n{}".format(n))
n:
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
n = eye(3,4,1)
print("n:\n{}".format(n))
n:
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
n = eye(3,4,-1)
print("n:\n{}".format(n))
n = diag([1,2,3,4])
print("n:\n{}".format(n))
n:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]

▲ 图3.4.1 Matrix Diagnoal

3.5 随机矩阵

n = random.random((5,4))
print("n:\n{}".format(n))
n:
[[0.01356284 0.90473283 0.97940574 0.28104009]
[0.47466198 0.27617192 0.74221122 0.20462867]
[0.34521728 0.46786105 0.24819072 0.71578562]
[0.51775933 0.51530835 0.06254809 0.92659839]
[0.30551515 0.60956763 0.43818475 0.31937707]]

■ 相关文献链接:

  • Trace of a matrix

● 相关图表链接:

  • 图3.4.1 Matrix Diagnoal

numpy中计算矩阵数值的核心函数相关推荐

  1. numpy中向量和矩阵相关乘法总结

    numpy中矩阵相关乘法总结 一.numpy中向量和矩阵的概念 向量:1维 矩阵:至少是2维 注意:numpy中对于向量的定义与数学中对向量的定义有些不同,数学中对向量的定义是竖向写法,但由于nump ...

  2. numpy中的矩阵与数学上的矩阵的关系

    ➤00 矢量.矩阵 在数学上,矢量和矩阵之间具有很强的联系.矢量可以看成行数.或者列数为1的矩阵.所以它可以被分成行矢量,或者列矢量. 下面分别表示了一个行矢量和一个列矢量. xˉ=[x1,x2,x3 ...

  3. fun是什么意思 python中def_【python】 numpy中的矩阵转置(ndarray.T)为什么不加括号却可以实现方法的功能...

    [python] numpy中的矩阵转置(ndarray.T)为什么不加括号却可以实现方法的功能 经过搜索和查询源码了解到,.T就是一个方法,但是是被装饰器修饰了一下... @property是pyt ...

  4. python Numpy 中的矩阵向量乘法(np.multiply()、np.dot()、np.matmul() 和 星号(*)、@)

    python Numpy 中的矩阵向量乘法 总结 1. 对于 np.array 对象 1.1 元素乘法 用 a*b 或 np.multiply(a,b) 1.2 矩阵乘法 用 np.dot(a,b) ...

  5. numpy中的矩阵,线性代数

    文章目录 1.线性代数 1.1.矩阵 1.1.1.matrix,mat 1.1.3.矩阵乘法 1.1.4. 矩阵的逆 1.1.5.共轭矩阵 1.1.6.线性方程组 1.1.7.转置 1.1.8.矩阵的 ...

  6. python numpy矩阵索引_python – Numpy中的矩阵索引

    索引后查看形状: In [295]: A=np.matrix([1,2,3]) In [296]: A.shape Out[296]: (1, 3) In [297]: A[0] Out[297]: ...

  7. opencv中求矩阵均值和标准差函数

    矩阵的均值和标准差是计算过程中常用到的两个变量. 均值是将矩阵A(MXN)中所有元素求平均值 import numpy as np A_mean = np.mean(A) 标准差的平方表征矩阵A(MX ...

  8. python求级数的值_如何在Numpy中计算Fourier级数?

    这是一个老问题,但是由于我必须编写代码,所以我在这里发布了使用numpy.fft模块的解决方案,这可能比其他手工编制的解决方案更快. DFT是计算函数Fourier级数系数(定义为参数的解析表达式或某 ...

  9. Numpy中stack(),hstack(),vstack()函数详解

    这三个函数有些相似性,都是堆叠数组,里面最难理解的应该就是stack()函数了,我查阅了numpy的官方文档,在网上又看了几个大牛的博客,发现他们也只是把numpy文档的内容照搬,看完后还是不能理解, ...

最新文章

  1. IAsyncResult接口
  2. poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
  3. Windows Server 2012 R2 或 2016 无法安装 .NET Framework 3.5.1
  4. 数据库原理与应用(SQL Server)笔记 第五章 索引和视图
  5. Linux Perl 升级
  6. 与高通公司合作的Cyanogen团队,Thunderbird等等
  7. Unieap3.5-Grid编辑列中数字与下拉改变
  8. 剑指offer之替换空格
  9. 2019年,区块链不得不知的 9 件大事!
  10. 创建私有 Gems 源
  11. Graham-Scan小总结——toj2317 Wall
  12. 拓端tecdat|R语言复杂网络分析:聚类(社区检测)和可视化
  13. Caffe ImageNet例程翻译
  14. 基于感知哈希算法的图像相似匹配计算实战
  15. vs2010操作excel 需要安装office2010
  16. 高性能网络之shufflenet v2
  17. BZOJ_3689_异或之_可持久化Trie+堆
  18. et al和etc区别
  19. PHP基础+php高级+前端+项目实战视频教程免费分享
  20. Chrome 53 支持Shadow DOM、PaymentRequest等规范

热门文章

  1. BeanShell脚本接口之匿名类
  2. webform 分页、组合查询综合使用
  3. 我与 美国作家 21天精通C++ 作者 Rao的对话:
  4. 无刷新提交表单(非Ajax实现)
  5. Linux LXC基本配置选项
  6. django源码分析 LazySetting对象
  7. Sql Server 三个很有用的函数
  8. php过滤html标签截取部分内容
  9. webstorm javascript IDE调试
  10. Linux定时任务Crontab执行PHP脚本