php工程师做的tp架构,PHP开发晋升课程 BAT资深工程师解析Tp5+Tp6底层源码

很多PHP工程师在工作中可以顺畅的使用TP框架进行业务开发,但当框架有升级或改动的时候就会不知所措。如果开发者对框架底层源码有一定的了解,这个问题就很好解决。 为了解决这块的痛点并让大家对PHP以及底层框架有更深入的理解,singwa老师在本门课程为大家一步步分析ThinkPHP的底层源码,在分析的过程中,逐步提升技术水平。轻松应对不同的TP版本和不同的框架,掌握课程所授内容,可基本达到百度T5的水平。

适合人群

工作经验2年以上的PHP开发

希望提升PHP及相关框架开发水平的PHPer

技术储备要求

Linux基础

PHP开发经验

理解面向对象开发思想

专题套餐

全方位深度剖析PHP7底层源码

TP6.0从0到1完整构建高并发电商服务系统

辦法一:運用矩陣的(Kronecker) 積結構(Hadamard)矩陣

定義2.1

​ 設(A=(a{ij}))爲一個(m\times p)的矩陣,(B=(b{ij}))爲一個(n\times q)矩陣,令:

[A\times B=\begin{bmatrix} a{11}B & a{12}B & \dots & a{1p}B\ a{21}B & a{22}B & \dots & a{2p}B\ \vdots & \vdots & \ddots & \vdots\ a{m1}B & a{m2}B & \dots & a_{mp}B \end{bmatrix} ]

這樣的方式(A\times B)被稱作爲直積,也被叫做(Kronecker)積

引理

設m爲一個常數,(A,A_1, A_2)爲(m\times p)矩陣,(B,B_1,B_2)爲(n\times q)的矩陣,C爲(p\times s)矩陣,D爲(q\times t)矩陣,則有下面這些定理的呈現

[(1)m(A\times B)=(mA)\times B \ (2)A\times (B_1+ B_2)=A\times B_1 + A\times B_2\ (3)(A_1 + A_2)\times B = A_1 \times B + A_2\times B\ (4)(A\times B)^T=A^T \times B^T\ (5)(A\times B)(C\times D)=AC\times BD\ \ (這個與料想的不同) ]

(1)~(4)顯然成立,如今證明(5)

[A=\begin{bmatrix} a{11} & a{12} & \dots & a{1p}\ a{21} & a{22} & \dots & a{2p}\ \vdots& \vdots & \ddots & \vdots\ a{m1} & a{m2} & \dots & a{mp} \end{bmatrix}\ C=\begin{bmatrix} c{11} & c{12} & \dots & c{1s}\ c{21} & c{22} & \dots & c{2s}\ \vdots& \vdots & \ddots & \vdots\ c{p1} & c{p2} & \dots & c{ps} \end{bmatrix}\ (A\times B)(C\times D)=\begin{bmatrix} a{11}B & a{12}B & \dots & a{1p}B\ a{21}B & a{22}B & \dots & a{2p}B\ \vdots& \vdots & \ddots & \vdots\ a{m1}B & a{m2}B & \dots & a{mp}B \end{bmatrix}\begin{bmatrix} c{11}D & c{12}D& \dots & c{1s}D\ c{21}D & c{22}D & \dots & c{2s}D\ \vdots& \vdots & \ddots & \vdots\ c{p1}D & c{p2}D& \dots & c{ps}D \end{bmatrix}\ =\begin{bmatrix} \sum{i=1}^{p}a{1i}c{i1}BD & \sum{i=1}^{p}a{1i}c{i2}BD & \dots & \sum{i=1}^{p}a{1i}c{is}BD \ \vdots & \vdots & \dots & \vdots \ \sum{i=1}^{p}a{mi}c{i1}BD & \sum{i=1}^{p}a{mi}c{i2}BD & \dots & \sum{i=1}^{p}a{mi}c{is}BD \end{bmatrix}=(AC)\times (BD) ]

所以不難證明這個定理是成立的。

定理2.1

設(H_1)與(H_2)分別爲(m)階與(n)階(H-矩陣),則(H_1 \times H_2)爲(mn)階(H-矩陣)

證明:

[\begin{eqnarray} (H_1\times H_2)(H_1\times H_2)^T && =(H_1\times H_2)(H_1^T\times H_2^T)\ && =(H_1H_1^T)\times (H_2H_2^T)\ && =(mI)\times (nI)\ && =mnI \end{eqnarray} ]

推論1

若H爲一個m階(H-矩陣),則(\begin{pmatrix}H & H\ H & -H\end{pmatrix})是一個2m階(H-矩陣)

由於(H_2)是(\begin{pmatrix}1 & 1\ 1 & -1\end{pmatrix}),所以上述的結論顯然成立

推論2

恣意(t \geq 0, 2^i)階的(H-矩陣)都是一定存在的

辦法二:應用矩陣的強直積結構(Hadamard)矩陣

定義2.2.2 設(A)爲如下的(tm\times tm)矩陣

[A= \begin{bmatrix} A{11} & A{12} & \dots & A{1t}\ A{21} & A{22} & \dots & A{2t}\ \vdots & \vdots & \ddots & \vdots\ A{t1} & A{t2} & \dots & A_{tt}\ \end{bmatrix}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ A是一個m\times m階矩陣\ ]

又設B爲如下的(tn\times tn)矩陣

[B = \begin{bmatrix} B{11} & B{12} & \dots & B{1t}\ B{21} & B{22} & \dots & B{2t}\ \vdots & \vdots & \ddots & \vdots \ B{t1} & B{t2} & \dots & B_{tt}\ \end{bmatrix}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ B是一個n\times n階矩陣 ]

令下式成立:

[A\otimes B=P= \begin{bmatrix} P{11} & P{12} & \dots & P{1t}\ P{21} & P{22} & \dots & P{2t}\ \vdots & \vdots & \ddots & \vdots \ P{t1} & P{t2} & \dots & P_{tt}\ \end{bmatrix} ]

其中(P{ij}=\sum{k=1}^{t}A{ik}\times B{kj}(1\leq i, j\leq t))則稱(P)爲(A)與(B)的強直積

元素換成矩陣的一種乘法

引理2.2.2 定義2.2.2中(A)與(B)若滿足

[AA^T=rI{tm};\ \ BB^T=sI{tm} ]

[(A\otimes B)(A\otimes B)^T=rsI_{tmn} ]

證明:設

[(A\otimes B)(A\otimes B)^T= \begin{bmatrix} L{11} & L{12} & \dots & L{1t}\ L{21} & L{22} & \dots & L{2t}\ \vdots & \vdots & \ddots & \vdots\ L{t1} & L{t2} & \dots & L_{tt}\ \end{bmatrix} ]

則有當(1\leq a, b \leq t),

[\begin{eqnarray} L{ab} &&=\sum{k=1}^t(A{a1}\times B{1k} + A{a2}\times B{2k}+\dots+A{at}\times B{tk})(A{b1}^T\times B{1k}^T+A{b2}^T\times B{2k}^T+\dots + A{bt}^T\times B{tk}^T)\ &&=\sum{k=1}^{t}\sum{i=1}^{t}\sum{j=1}^{t}(A{ai}\times B{ik})(A{bj}^T\times B{jk}^T)\ &&=\sum{k=1}^{t}\sum{i=1}^{t}\sum{j=1}^{t}(A{ai}A{bj}^T)\times (B{ik}B{jk}^T)\ &&=\sum{k=1}^{t}\sum{i=1}^{t}(A{ai}A{bj}^T)\times\sum{j=1}^{t}(B{ik}B_{jk}^T) \end{eqnarray} ]

剖析:

[B{ik}B{jk}= \begin{cases} 0\ \ \ \ \ \ \ \ \ \ \ i\neq j\ sI_{n} \ \ \ \ \ \ \ i=j \end{cases} ]

而:

[A{ai}A{bj}= \begin{cases} 0\ \ \ \ \ \ \ \ \ \ \ a\neq b\ rI_{m} \ \ \ \ \ \ a=b \end{cases} ]

則能夠晓得只要當(a=b)時分才有值不等於零,而這個值就是(rsImn), 證畢!

定理2.2.2

若(A)爲(2m)階的(H-矩陣),(B)爲(2n)階的(H-矩陣),則(2mn)階矩陣(H-矩陣)也必然存在。

證明:

[C=\frac{1}{2}A \begin{bmatrix} I_m & I_m\ I_m & -I_m \end{bmatrix} ]

這麼設的目的完整是爲了結構

則:

[CC^T=\frac{1}{2}AA^TmI{2m}=mI{2m} ]

易知:

[BB^T=2nI_{2n} ]

則經過引理晓得:

[H=C\otimes B ]

則:

[HH^T=(C\otimes B)(C \otimes B)^T=2mnI_{2mn} ]

所以說這個(2mn)階的(H-矩陣)一定存在的,證畢!

辦法三: 應用反形(H-矩陣)和(H-矩陣)睦偶來結構(Hadamard)矩陣

定義2.2.3

若存在一個(H-矩陣)(H),滿足條件(H=S+I),(S^T=-S),則稱(H)是一個反形(H-矩陣)

定義2.2.4

若存在(H-矩陣)(H),若滿足(H^T=H),則稱(H-矩陣)是對稱(H-矩陣)

定義2.2.5

設(M)是一個反型(H-矩陣),(N)是一個同階的對稱(H-矩陣),假如滿足條件

[MN=NM^T ]

則稱(M)和(N)爲一對(Hadamard)矩陣睦偶,简稱一對(H-矩陣)睦偶

也就是說這個MN矩陣是對稱矩陣

定理2.2.3

(1) (h)階反型(H-矩陣)(H=U+I);

(2) (m)階(H-矩陣)睦偶(M=W+I), (N=N^T)

(3)三個(l)(1, -1)矩陣(X,Y,Z)滿足

[(XY^T)^T=XY^T, (YZ^T)^T=YZ^T,\ (ZX^T)^T=ZX^T,XX^T=aI+(l-a)J,\ YY^T=cI+(l-c)J,ZZ^T=(l+1)I-J; ]

這里的,((m-1)c=m(l-h+1)-a),那麼矩陣

[\overline{H}=U\times N\times Z + I_{n}\times W\times Y + I_n\times I_m \times X ]

是一個(mlh)階的(H-矩陣)

證明: 由(\overline{H})的結構式子可知,(\overline{H})是一個(1, -1)矩陣,另外一方面,由條件(1),(2)知:

[U^T=-U,UU^T=(h-1)I_h;\W^T=-W,WW^T=(m-1)I_m\ MN=NM^T,MM^T=N^2=mI_m,WN=NW^T(下有简單證明) ]

M,N都是兩個(Hadamard)矩陣,所以有(MM^T=NN^T=mI_m)

[MN=NM^T\ (W+I)N=N(W+I)^T\ WN=NW^T\ ]

![VJV6CX3~CFFM1Y_1Z6TM84O.png]()

所以這個(\overline{H})Hadamard矩陣存在

Hadamard矩陣學習

Hadamard矩陣引見就到這里

![image.png]()

课後的一個習題

假如說(Ax=0)那麼(A^TAx=0)所以說,(Ax=0)的解一定屬於(A^TAx=0)的解

假如說(A^TAx=0),然後左右同時乘以(x^T)(\Rightarrow)(x^TA^TAx=0)(\Rightarrow)(||Ax||=0)也就是說這個(Ax=0)成立

所以說這兩個矩陣(A^TA與A)矩陣同階

假如說(A^2)與(A)具有同一個nullspace,那麼這個矩陣(A)一定就是方陣

爲處理的問題:

假如說N(A)是一個零向量,那麼也就是說這個(Ax=0)的列向量空間滿秩了,

假如說B= (\begin{bmatrix}A & A & A\end{bmatrix})假如去找(Bx=0)的解,由於A曾經是列滿秩,那麼會多出來

1.4 Elimination and (A = LU)

高斯消變換元法: 只不過需求把變換矩陣寫出來

(L)是一個變換矩陣(左下角三角矩陣),(U)是一個被變換矩陣(右上角三角矩陣)

小小頭腦風暴

前面學過的矩陣的合成,我們能夠晓得關於方程組(Ax=0)的解實践上是解的(A)的行向量空間的解,那麼我們天經地義的晓得(xA=0)的解是行空間的解。

![image.png]()

運用之前學習的矩陣的(A=CMR)能夠對每一列的元素與之對應的行停止結構,使得一切的行與列都能夠結構出一個秩爲1的新矩陣,最後再加和起來就構成了矩陣的合成,有時分需求強調的是,矩陣合成過後不一定是兩個上下三角的矩陣,所以需求酌情停止行變換!留意是行變換

這麼做的確是有點费事,我想要算矩陣的行列式,原本應該十分疾速(直接轉換稱爲上三角矩陣),但是這種辦法的益處在與把變換矩陣也順便存儲了下來,防止了矩陣行變換時分的變化招致的原矩陣與後來矩陣的不等關係

![image.png]()

計算上類行列式公式:(|A|=a(b-a)(c-b)(d-c))也就是除了第一行元素以外的一切相對差值之積

二次型的規範化的合同過程,由於對稱,所以兩個方向上的變換能夠由一個變換矩陣來描绘

![image.png]()

關於選择矩陣拆分的時分,假如選择從左上角往右下角去拆,得到的將會是很規範的矩陣變換方式,但是假如從左下到右上角的變換,則會變成兩個不那麼規範的變換矩陣的乘積方式,所以引薦運用從左上到右下,也就是從第一行第一列開端變換

1.5 Orthogonal Matrices and Subspaces

左逆與右逆矩陣

![image.png]()

![image-20210118180049984]()

關於左右僞逆矩陣,經過左右逆矩陣的方式結構出來的,例如左僞逆矩陣的(L=(A^TA)^{-1}A^H\Rightarrow (A^TA)^{-1}A^HA=I)

顯然成立,這就是顯然成立

實質上就是經過矩陣無法增維的想法,首先先結構一個滿秩的(n\times n)的矩陣空間,隨後逆過去,使得(A)作用於這個變換矩陣,最後得到我們的左僞逆。

鏇轉矩陣與反射矩陣

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值