MIT线性代数总结笔记——行列式

行列式及其性质

前面的章节已经学习了大量关于矩阵的知识,现在我们来集中探讨一下方阵的性质,其中行列式和特征值是重中之重,本章来单独讨论行列式。

行列式(Determinants)

行列式是每个方阵都具有的值,我们将矩阵A的行列式记作det(A) = |A|。行列式将很多矩阵信息压缩到这一个数值中,例如矩阵的不可逆(奇异矩阵)与行列式的值为0等价(也就是说行列式可以直接判断矩阵是否可逆)。

性质

我们先从行列式最主要的三个性质开始讲起,因为这三个性质定义了行列式,然后再拓展到其他性质上。

(1)单位矩阵的行列式为1

例如二维单位矩阵:det(I) = \begin{vmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1\end{vmatrix} = 1

(2)如果发生行交换,那么行列式的正负号会改变。

将性质(1)和性质(2)结合在一起,就能得到所有置换矩阵P的行列式。

例如

\begin{vmatrix} 1 & 0 \\ 0 & 1\end{vmatrix} = 1

\begin{vmatrix} 0 & 1 \\ 1 & 0\end{vmatrix} = -1

通过该性质还可以得出,置换矩阵P具有奇偶性,也就是说,一个矩阵不可能经过奇数次置换得到和偶数次置换相同的方阵。

性质(3)有两个,分别为

(3)a. \begin{vmatrix} ta & tb \\ c & d\end{vmatrix} = t\begin{vmatrix} a & b \\ c & d\end{vmatrix}

(3)b. \begin{vmatrix} a+a' & b+b' \\ c & d\end{vmatrix} = \begin{vmatrix} a & b \\ c & d\end{vmatrix}+\begin{vmatrix} a' & b' \\ c & d\end{vmatrix}

为什么说由以上三个性质可以定义行列式,因为行列式其余的性质皆可由上述三个性质推导而出,以下是行列式其余的性质及它们的推导过程。

(4)如果矩阵中的两行相等,则它的行列式为0

矩阵中的两行相等,意味着发生两行交换时,行列式不变,根据性质(2):“如果发生行交换,那么行列式的正负号会改变。”,那么行列式只能为0

(5)行列式不因消元操作而改变。

证明:

\begin{vmatrix} a & b \\ c-la & d-lb\end{vmatrix} = \begin{vmatrix} a & b \\ c & d\end{vmatrix} + \begin{vmatrix} a & b \\ -la & -lb\end{vmatrix}(性质(3)b.) = \begin{vmatrix} a & b \\ c & d\end{vmatrix} - l\begin{vmatrix} a & b \\ a & b\end{vmatrix}(性质(3)a.) = \begin{vmatrix} a & b \\ c & d\end{vmatrix}(性质(4))

(6)若矩阵中有一行是0,那么行列式为0

矩阵中有一行是0,可以看作\begin{vmatrix} 0 & 0 \\ c & d\end{vmatrix} = \begin{vmatrix} a×0 & b×0 \\ c & d\end{vmatrix},那么有

\begin{vmatrix} a×0 & b×0 \\ c & d\end{vmatrix} = 0\begin{vmatrix} a & b \\ c & d\end{vmatrix} = 0

(7)对于三角阵的行列式,主元的乘积等于行列式。例如在四维中,设上三角矩阵U=\left[\begin{matrix} u_{11} & u_{12} & u_{13} & u_{14} \\ 0 & u_{22} & u_{23} & u_{24} \\ 0 & 0 & u_{33} & u_{34} \\ 0 & 0 & 0 & u_{44}\end{matrix}\right],则det(U) = u_{11}×u_{22}×u_{33}×u_{44}n维同理。

对于三角矩阵,我们可以通过不断地消元最终得到对角矩阵,例如,通过消元法可以得到

U=\left[\begin{matrix} u_{11} & u_{12} & u_{13} & u_{14} \\ 0 & u_{22} & u_{23} & u_{24} \\ 0 & 0 & u_{33} & u_{34} \\ 0 & 0 & 0 & u_{44}\end{matrix}\right] = \left[\begin{matrix} u_{11} & 0 & 0 & 0 \\ 0 & u_{22} & 0 & 0 \\ 0 & 0 & u_{33} & 0 \\ 0 & 0 & 0 & u_{44}\end{matrix}\right] = D(对角矩阵)

那么我们再利用性质(3)a.来证明对角矩阵的行列式就是对角线元素相乘

\begin{vmatrix} u_{11} & 0 & 0 & 0 \\ 0 & u_{22} & 0 & 0 \\ 0 & 0 & u_{33} & 0 \\ 0 & 0 & 0 & u_{44}\end{vmatrix} =u_{11} u_{22} u_{33}u_{44}\begin{vmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{vmatrix}

(8)det(A) = 0,则矩阵A为奇异矩阵。相反,若det(A) \not= 0,则矩阵A可逆。

因为如果A可逆,化简后能得到矩阵各列都含非0主元,得到三角矩阵,再利用性质(7)得到其行列式。

(9)det(AB) = det(A)det(B)

这意味着A^{-1}A = I \Rightarrow det(A^{-1})det(A) = det(I) = 1 \Rightarrow det(A^{-1}) = \frac{1}{det(A)},这也可以作为本性质的证明,也可以用对角阵AB,但是我们必须一步步进行消元,整个证明过程需要是非耐心,最终证明该性质对任意矩阵成立。

同时本性质还能推出

det(A^2) = det(A)det(A)=det(A)^2

这说明如果矩阵进行平方,那么它的行列式也会平方。

此外,本性质还能推出

det(2A) = 2^ndet(A)

因为对一个n×n矩阵,将矩阵翻倍意味着各列向量都翻倍,一共翻倍n次,因此行列式变成了2^n倍。

(10)det(A^T) = det(A)

证明:

根据A = LU,有

det(A) = det(LU)=det(L)det(U)

det(A^T) = det((LU)^T) = det(U^TL^T)= det(U^T)det(L^T)

由于LU都是三角矩阵,因此它们的行列式都是对角线的乘积,因此

det(L) = det(L^T) \quad det(U) = det(U^T)

所以最后我们得出

det(A^T) = det(A)

行列式的计算

对于行列式的计算,我们先来推导二维行列式的求解过程。

\begin{vmatrix} a & b \\ c & d\end{vmatrix} = \begin{vmatrix} a & 0 \\ c & d\end{vmatrix}+\begin{vmatrix} 0 & b \\ c & d\end{vmatrix} = \begin{vmatrix} a & 0 \\ c & 0\end{vmatrix}+\begin{vmatrix} a & 0 \\ 0 & d\end{vmatrix}+\begin{vmatrix} 0 & b \\ c & 0\end{vmatrix}+\begin{vmatrix} 0 & b \\ 0 & d\end{vmatrix} =\begin{vmatrix} a & 0 \\ 0 & d\end{vmatrix} + \begin{vmatrix} 0 & b \\ c & 0\end{vmatrix} = ad-bc

观察二维行列式的求解过程,我们发现,行列式的求解取决于那些分解后非零行列式的和,即各行各列均有非零元素的行列式。因此我们按照这个规律,继续推导三维行列式,我们这次只写出非0项,有

\begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} = \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & a_{22} & 0 \\ 0 & 0 & a_{33} \end{vmatrix} + \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & 0 & a_{23} \\ 0 & a_{32} & 0 \end{vmatrix} + \begin{vmatrix} 0 & a_{12} & 0 \\ a_{21} & 0 & 0 \\ 0 & 0 & a_{33} \end{vmatrix}+\begin{vmatrix} 0 & a_{12} & 0 \\ 0 & 0 & a_{23} \\ a_{31} & 0 & 0 \end{vmatrix}

+ \begin{vmatrix} 0 & 0 & a_{13} \\ a_{21} & 0 & 0 \\ 0 & a_{32} & 0 \end{vmatrix} + \begin{vmatrix} 0 & 0 & a_{13} \\ 0 & a_{22} & 0 \\ a_{31} & 0 & 0 \end{vmatrix} = a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}

可以发现规律,因为各行各列均需有非零元素,所以对于n×n的矩阵,其行列式分解后的非零项有n!个。

同理,我们根据n阶行列式可以分解为n!个非零行列式来推到出高维行列式的一般求解公式,即

|A| = \sum_{n!}\pm a_{1\alpha}a_{2\beta}a_{3\gamma}...a_{n\psi}(\alpha,\beta,\gamma,...,\psi为1到n的某种排列) = P^n_{n}

例 求|A| = \begin{vmatrix} 0 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{vmatrix}

如果检查该行列式分解出的24项会发现其中有22项为0,剩下的非零行列式为

\begin{vmatrix} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{vmatrix} = 1和\begin{vmatrix} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{vmatrix} = -1

因此|A| = 1-1 = 0

代数余子式(Cofactors)

接下来引入代数余子式的概念,它的作用是把n阶行列式化简为n-1阶行列式。

先来看3×3行列式的情况,上一节我们得到了

\begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} = a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}

那么我们以行列式第一行的三个元素来合并同类项,可以得到

a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31} \\ = a_{11}(a_{22}a_{33} - a_{23}a_{32}) + a_{12}(-a_{21}a_{33} + a_{23}a_{31}) + a_{13}(a_{21}a_{32}-a_{22}a_{31})

合并同类项后,我们又可以把新的三个项看作是三个矩阵的行列式

a_{11}(a_{22}a_{33} - a_{23}a_{32}) + a_{12}(-a_{21}a_{33} + a_{23}a_{31}) + a_{13}(a_{21}a_{32}-a_{22}a_{31}) \\= \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & a_{22} & a_{23} \\ 0 & a_{32} & a_{33} \end{vmatrix} - \begin{vmatrix} 0 & a_{12} & 0 \\ a_{21} & 0 & a_{23} \\ a_{31} & 0 & a_{33} \end{vmatrix} + \begin{vmatrix} 0 & 0 & a_{13} \\ a_{21} & a_{22} & 0 \\ a_{31} & a_{32} & 0 \end{vmatrix}

由此我们定义a_{ij}的代数余子式:将原行列式的第i行与第j列抹去后得到的n-1阶行列式记为C_{ij}i+j为偶数时,该项前的符号为+i+j为奇数时,该项前的符号为-,规律如下

\begin{vmatrix} + & - & + \\ - & + & - \\ + & - & + \end{vmatrix}

a_{11}的代数余子式为

C_{11} = (-1)^{1+1}\begin{vmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{vmatrix}

因此,将矩阵A沿第一行展开的公式为

|A| = a_{11}C_{11} + a_{12}C_{12}+...+a_{1n}C_{1n}

|A_1| = 1 \quad |A_2| = \begin{vmatrix} 1 & 1 \\ 1 & 1 \end{vmatrix}= 0

|A_3| = \begin{vmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 1 \end{vmatrix}= \begin{vmatrix} 1 & 0 & 0 \\ 0 & 1 & 1 \\ 0 & 1 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 0 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 1 & 0 \end{vmatrix} = 0-1+0 = -1

|A_4||A_5||A_6||A_7|

|A_4| = \begin{vmatrix} 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} = \begin{vmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} = 1·|A_3| + (-1)·|A_2| = 0

发现规律:|A_n| = |A_{n-1}| - |A_{n-2}|,因此可知

|A_5| = 0 \quad |A_6| = 1 \quad |A_7| = 1

会发现,随着维度增加,行列式的值呈现1,0,-1,-1,0,1,以这样6个值循环,因此周期为6

小节

至此,我们掌握了三种方法来求一个方阵的行列式:

  • 消元法(LU分解)将矩阵A化为U|A|就是主元的乘积(最简单)
  • 使用代数余子式按某一行展开(稍复杂)
  • 按行列式公式完全展开计算,需要求n!项之积(很复杂)

行列式的应用

逆矩阵公式

我们已经接触到很多逆矩阵了,但是一直没有给出逆矩阵的公式,你可以通过Gauss-Jordan消元法来求矩阵的逆,不过现在学习了行列式,可以直接求逆矩阵。

我们已经知道二阶逆矩阵的公式为:

\left[\begin{matrix} a & b \\ c & d \end{matrix}\right] ^{-1} = \frac{1}{ad-bc}\left[\begin{matrix} d & -b \\ -c & a \end{matrix}\right]

那么我们能否通过二阶公式来推导至更高维度?

通过观察公式我们发现:

  • \frac{1}{ad-bc}实际就是矩阵A的行列式的倒数
  • 后面的矩阵中的d实际上是矩阵A中的a的代数余子式,同理,-b实际上就是c的代数余子式

因此可以得出,逆矩阵公式为

A^{-1} = \frac{1}{det(A)}C^T

等式右侧矩阵外的因子,其分母是矩阵的行列式,而矩阵为代数余子式矩阵(Cofactor Matrix)C的转置,称为伴随矩阵(Adjoint Matrix)。因此矩阵A的逆就是矩阵行列式的倒数与其伴随矩阵的乘积。

那么为什么是这个公式呢?我们来验证一下,假设等式成立,首先将等式两边都乘上矩阵A得到

AA^{-1} = A\frac{1}{det(A)}C^T \Rightarrow AC^T = det(A)I

因此,若逆矩阵公式成立其实就是判断AC^T是否与det(A)I相等。

AC^T = \left[\begin{matrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{matrix}\right]\left[\begin{matrix} C_{11} & \cdots & C_{n1} \\ \vdots & \ddots & \vdots \\ C_{1n} & \cdots & C_{nn} \end{matrix}\right]

根据矩阵相乘,我们观察发现,矩阵AC^T的第一行第一列元素等于矩阵A第一行和矩阵C^T第一列进行点积,计算可得

\sum_{j=1}^{n}a_{1j}C_{1j} = det(A)

也就是说,它们的点积其实就是矩阵A的行列式计算公式,而AC^T对角线上的所有元素都是如此,因此我们可以得到,它们相乘后的矩阵,其对角线处全部都是行列式。那么非对角元素呢?以第二行第一列为例,相乘我们发现,各个代数余子式的形式不变,但是与代数余子式相乘的变为了矩阵A第二行第j列元素。因此这个形式相当于用矩阵A第二行的元素替代第一行的元素得到的矩阵,前两行的元素相同,因此按照行列式性质(4),其值为0

\sum_{j=1}^{n}a_{2j}C_{1j} = \begin{vmatrix} a_{21} & a_{22} & \cdots & \cdots & a_{2n} \\ a_{21} & a_{22} & \cdots & \cdots & a_{2n} \\ a_{31} & a_{32} & \ddots & & a_{3n} \\ \vdots & & & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & \cdots & a_{nn} \end{vmatrix}= 0

因此最后我们得到

AC^T = \left[\begin{matrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{matrix}\right]\left[\begin{matrix} C_{11} & \cdots & C_{n1} \\ \vdots & \ddots & \vdots \\ C_{1n} & \cdots & C_{nn} \end{matrix}\right] = \left[\begin{matrix} det(A) & 0 & \cdots & 0 \\ 0 & det(A) & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & det(A) \end{matrix}\right]I= det(A)I

克莱姆法则(Cramer's Rule)

对于可逆矩阵A,方程Ax=b必有解x=A^{-1}b,将逆矩阵的公式代入,那么

x=A^{-1}b=\frac{1}{det(A)}C^Tb

克莱姆法则(Cramer's Rule)则是从另一个角度来看待这个公式,即x的分量x_jx_j = \frac{det(B_j)}{det(A)}

其中,矩阵B_j为用向量b替换矩阵A的第j列所得到的新矩阵。例如

B_1 = \left[\begin{matrix} b_1 & a_{12} & \cdots & \cdots & a_{1n} \\ b_2 & a_{22} & \cdots & \cdots & a_{2n}\\ b_3 & a_{32} & \ddots & & a_{3n} \\ \vdots & & & \ddots & \vdots \\ b_n & a_{n2} & \cdots & \cdots & a_{nn} \end{matrix}\right]

矩阵B_j的行列式的值从第j列用代数余子式进行展开计算,正好是伴随矩阵C^T的第j行,与向量b点积的结果。

但是相较于高斯消元法,克莱姆法则计算方程的解的效率较低,它仅仅只是提供了一个代数表达式,让人们能代数运算而不是写算法。

行列式的几何意义

在二维中,行列式的几何意义其实就是矩阵所对应的线性变换所改变由空间中两基向量构成的矩形的面积的比例,对应到三维就是对应空间中三个基向量对应的平行六面体的体积的比例。

  • 例:我们在二维空间中以一组基向量x=\left[\begin{matrix} 1 \\ 0 \end{matrix}\right],y = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right]为例,两个基向量构成了一个单位矩形面积为1,假设现在要进行线性变换,变换矩阵为\left[\begin{matrix} 3 & 2 \\ 0 & 2 \end{matrix}\right],即变换后x轴单位向量由x=\left[\begin{matrix} 1 \\ 0 \end{matrix}\right]变为\left[\begin{matrix} 3 \\ 0 \end{matrix}\right],对应地,y轴单位向量由y = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right]变为\left[\begin{matrix} 2 \\ 2 \end{matrix}\right],变换后我们发现,矩形面积变成了6,是原单位矩形面积的6倍,其值其实就是行列式\begin{vmatrix} 3 & 2 \\ 0 & 2 \end{vmatrix} = 6

  • 当矩阵的行列式为0时,这意味着线性变换后,原空间被压缩成了一条线或一个点(二维情况下),即原空间的维度降低。这也解释了为何矩阵列向量线性相关时,经过它的线性变换后,原空间发生维度降低,其实就是因为它是奇异矩阵,它的行列式为0。

  • 当矩阵的行列式为负数时,表示矩阵的线性变换将原空间的定向发生了改变,如平面翻转。更为直观的就是变换后坐标轴的相对位置会发生变换。在三维中,一般情况下我们使用右手定则来构建坐标系,若此时现线性变换的矩阵行列式为负数时,线性变换后新的坐标系就会变成满足左手定则。但是行列式的绝对值大小仍然决定其体积的缩放比例。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容