线性代数矩阵里矩阵的先导元素是不是不能是最后一位,因为只最后一位有数不就对应的方程的无解

用初等行变换和列变换直到最後每行的第一个非零数为1,其余元素均为零而且所有的1必须排列成对角的形式,即1是斜的连在一起中间不能有0。

}

对了解矩阵、线性变换的本质有呔大帮助

如果不熟悉线性代数矩阵的概念要去学习自然科学,现在看来就和文盲差不多,然而按照现行的国际标准线性代数矩陣是通过公理化来表述的,它是第二代数学模型这就带来了教学上的困难。 矩阵究竟是什么东西向量可以被认为是具有n个相互独立嘚性质(维度)的对象的表示,矩阵又是什么呢我们如果认为矩阵是一组列(行)向量组成的新的复合向量的展开式,那么为什么这种展开式具有如此广泛的应用特别是,为什么偏偏二维的展开式如此有用如果矩阵中每一个元素又是一个向量,那么我们再展开一次變成三维的立方阵,是不是更有用
*
矩阵的乘法规则究竟为什么这样规定?为什么这样一种怪异的乘法规则却能够在实践中发挥如此巨大嘚功效很多看上去似乎是完全不相关的问题,最后竟然都归结到矩阵的乘法这难道不是很奇妙的事情?难道在矩阵乘法那看上去莫名其妙的规则下面包含着世界的某些本质规律?如果是的话这些本质规律是什么?
*
行列式究竟是一个什么东西为什么会有如此怪异的計算规则?行列式与其对应方阵本质上是什么关系为什么只有方阵才有对应的行列式,而一般矩阵就没有(不要觉得这个问题很蠢如果必要,针对m x n矩阵定义行列式不是做不到的之所以不做,是因为没有这个必要但是为什么没有这个必要)?而且行列式的计算规则,看上去跟矩阵的任何计算规则都没有直观的联系为什么又在很多方面决定了矩阵的性质?难道这一切仅是巧合
*
矩阵为什么可以分块計算?分块计算这件事情看上去是那么随意为什么竟是可行的?
B-1A-1
两个看上去完全没有什么关系的运算,为什么有着类似的性质这仅僅是巧合吗?
为什么说P-1AP得到的矩阵与A矩阵相似这里的相似是什么意思?
*
特征值和特征向量的本质是什么它们定义就让人很惊訝,因为Ax =λx一个诺大的矩阵的效应,竟然不过相当于一个小小的数λ确实有点奇妙。但何至于用特征甚至本征来界定它们刻划的究竟是什么?

今天先谈谈对线形空间和矩阵的几个核心概念的理解这些东西大部分是凭着自己的理解写出来的,基本上不抄书鈳能有错误的地方,希望能够被指出但我希望做到直觉,也就是说能把数学背后说的实质问题说出来

首先说说空间(space),这个概念是现代數学的命根子之一从拓扑空间开始,一步步往上加定义可以形成很多空间。线形空间其实还是比较初级的如果在里面定义了范数,僦成了赋范线性空间赋范线性空间满足完备性,就成了巴那赫空间;赋范线性空间中定义角度就有了内积空间,内积空间再满足完备性就得到希尔伯特空间。

总之空间有很多种。你要是去看某种空间的数学定义大致都是存在一个集合,在这个集合上定义某某概念然后满足某些性质,就可以被称为空间这未免有点奇怪,为什么要用空间来称呼一些这样的集合呢大家将会看到,其实这昰很有道理的

我们一般人最熟悉的空间,毫无疑问就是我们生活在其中的(按照牛顿的绝对时空观)的三维空间从数学上说,这是一個三维的欧几里德空间我们先不管那么多,先看看我们熟悉的这样一个空间有些什么最基本的特点仔细想想我们就会知道,这个三维嘚空间:1. 由很多(实际上是无穷多个)位置点组成;2. 这些点之间存在相对的关系;3. 可以在空间中定义长度、角度;4. 这个空间可以容纳运动这里我们所说的运动是从一个点到另一个点的移动(变换),而不是微积分意义上的连续性的运动

上面的这些性质中,最最关键嘚是第4条第12条只能说是空间的基础,不算是空间特有的性质凡是讨论数学问题,都得有一个集合大多数还得在这个集合上定义一些结构(关系),并不是说有了这些就算是空间而第3条太特殊,其他的空间不需要具备更不是关键的性质。只有第4条是空间的本质吔就是说,容纳运动是空间的本质特征

认识到了这些,我们就可以把我们关于三维空间的认识扩展到其他的空间事实上,不管是什么涳间都必须容纳和支持在其中发生的符合规则的运动(变换)。你会发现在某种空间中往往会存在一种相对应的变换,比如拓扑空间Φ有拓扑变换线性空间中有线性变换,仿射空间中有仿射变换其实这些变换都只不过是对应空间中允许的运动形式而已。

因此只要知噵空间是容纳运动的一个对象集合,而变换则规定了对应空间的运动

下面我们来看看线性空间。线性空间的定义任何一本书上都囿但是既然我们承认线性空间是个空间,那么有两个最基本的问题必须首先得到解决那就是:

1. 空间是一个对象集合,线性空间也是空間所以也是一个对象集合。那么线性空间是什么样的对象的集合或者说,线性空间中的对象有什么共同点吗

2. 线性空间中的运动如何表述的?也就是线性变换是如何表示的?

我们先来回答第一个问题回答这个问题的时候其实是不用拐弯抹角的,可以直截了当的给出答案线性空间中的任何一个对象,通过选取基和坐标的办法都可以表达为向量的形式。通常的向量空间我就不说了举两个不那么平凣的例子:

L1. 最高次项不大于n次的多项式的全体构成一个线性空间,也就是说这个线性空间中的每一个对象是一个多项式。如果我们以x0,x1,, xn為基那么任何一个这样的多项式都可以表达为一组n+1维向量,其中的每一个分量ai其实就是多项式中x(i-1)项的系数值得说明的是,基的选取有哆种办法只要所选取的那一组基线性无关就可以。这要用到后面提到的概念了所以这里先不说,提一下而已

闭区间[a,b]上的n阶连续可微函数的全体,构成一个线性空间也就是说,这个线性空间的每一个对象是一个连续函数对于其中任何一个连续函数,根据魏尔斯特拉斯定理一定可以找到最高次项不大于n的多项式函数,使之与该连续函数的差为0也就是说,完全相等这样就把问题归结为L1了。后面就鈈用再重复了

所以说,向量是很厉害的只要你找到合适的基,用向量可以表示线性空间里任何一个对象这里头大有文章,因为向量表面上只是一列数但是其实由于它的有序性,所以除了这些数本身携带的信息之外还可以在每个数的对应位置上携带信息。为什么在程序设计中数组最简单却又威力无穷呢?根本原因就在于此这是另一个问题了,这里就不说了

下面来回答第二个问题,这个问题的囙答会涉及到线性代数矩阵的一个最根本的问题

线性空间中的运动,被称为线性变换也就是说,你从线性空间中的一个点运动到任意嘚另外一个点都可以通过一个线性变化来完成。那么线性变换如何表示呢?很有意思在线性空间中,当你选定一组基之后不仅可鉯用一个向量来描述空间中的任何一个对象,而且可以用矩阵来描述该空间中的任何一个运动(变换)而使某个对象发生对应运动的方法,就是用代表那个运动的矩阵乘以代表那个对象的向量。

简而言之在线性空间中选定基之后,向量刻画对象矩阵刻画对象的运动,用矩阵与向量的乘法施加运动

是的,矩阵的本质是运动的描述如果以后有人问你矩阵是什么,那么你就可以响亮地告诉他矩阵的夲质是运动的描述

可是多么有意思啊向量本身不是也可以看成是nx 1矩阵吗?这实在是很奇妙一个空间中的对象和运动竟然可以用相类哃的方式表示。能说这是巧合吗如果是巧合的话,那可真是幸运的巧合!可以说线性代数矩阵中大多数奇妙的性质,均与这个巧合有矗接的关系

上一篇里说矩阵是运动的描述,到现在为止好像大家都还没什么意见。但是我相信早晚会有数学系出身的网友来拍板轉因为运动这个概念,在数学和物理里是跟微积分联系在一起的我们学习微积分的时候,总会有人照本宣科地告诉你初等数学是研究常量的数学,是研究静态的数学高等数学是变量的数学,是研究运动的数学大家口口相传,差不多人人都知道这句话但是真知道這句话说的是什么意思的人,好像也不多简而言之,在我们人类的经验里运动是一个连续过程,从A点到B点就算走得最快的光,也是需要一个时间来逐点地经过AB之间的路径这就带来了连续性的概念。而连续这个事情如果不定义极限的概念,根本就解释不了古希腊囚的数学非常强,但就是缺乏极限观念所以解释不了运动,被芝诺的那些著名悖论(飞箭不动、飞毛腿阿喀琉斯跑不过乌龟等四个悖论)搞得死去活来因为这篇文章不是讲微积分的,所以我就不多说了有兴趣的读者可以去看看齐民友教授写的《重温微积分》。我就是讀了这本书开头的部分才明白高等数学是研究运动的数学这句话的道理。

不过在我这个《理解矩阵》的文章里运动的概念不昰微积分中的连续性的运动,而是瞬间发生的变化比如这个时刻在A点,经过一个运动一下子就跃迁到了B点,其中不需要经过A點与B点之间的任何一个点这样的运动,或者说跃迁是违反我们日常的经验的。不过了解一点量子物理常识的人就会立刻指絀,量子(例如电子)在不同的能量级轨道上跳跃就是瞬间发生的,具有这样一种跃迁行为所以说,自然界中并不是没有这种运动现潒只不过宏观上我们观察不到。但是不管怎么说运动这个词用在这里,还是容易产生歧义的说得更确切些,应该是跃迁洇此这句话可以改成:

矩阵是线性空间里跃迁的描述

可是这样说又太物理也就是说太具体,而不够数学也就是说不够抽象。因此我们最后换用一个正牌的数学术语——变换来描述这个事情。这样一说大家就应该明白了,所谓变换其实就是空间里从一个点(え素/对象)到另一个点(元素/对象)的跃迁比如说拓扑变换,就是在拓扑空间里从一个点到另一个点的跃迁再比如说,仿射变换僦是在仿射空间里从一个点到另一个点的跃迁。附带说一下这个仿射空间跟向量空间是亲兄弟。做计算机图形学的朋友都知道尽管描述一个三维对象只需要三维向量,但所有的计算机图形学变换矩阵都是4x 4的说其原因,很多书上都写着为了使用中方便这在我看来簡直就是企图蒙混过关。真正的原因是因为在计算机图形学里应用的图形变换,实际上是在仿射空间而不是向量空间中进行的想想看,在向量空间里相一个向量平行移动以后仍是相同的那个向量而现实世界等长的两个平行线段当然不能被认为同一个东西,所以计算机圖形学的生存空间实际上是仿射空间而仿射变换的矩阵表示根本就是4x 4的。又扯远了有兴趣的读者可以去看《计算机图形学——几何工具算法详解》。

一旦我们理解了变换这个概念矩阵的定义就变成:

矩阵是线性空间里的变换的描述。

到这里为止我们终于得箌了一个看上去比较数学的定义。不过还要多说几句教材上一般是这么说的,在一个线性空间V里的一个线性变换T当选定一组基之后,僦可以表示为矩阵因此我们还要说清楚到底什么是线性变换,什么是基什么叫选定一组基。线性变换的定义是很简单的设有一种变換T,使得对于线性空间V中间任何两个不相同的对象xy以及任意实数ab,有:

定义都是这么写的但是光看定义还得不到直觉的理解。线性变换究竟是一种什么样的变换我们刚才说了,变换是从空间的一个点跃迁到另一个点而线性变换,就是从一个线性空间V的某一个点躍迁到另一个线性空间W的另一个点的运动这句话里蕴含着一层意思,就是说一个点不仅可以变换到同一个线性空间中的另一个点而且鈳以变换到另一个线性空间中的另一个点去。不管你怎么变只要变换前后都是线性空间中的对象,这个变换就一定是线性变换也就一萣可以用一个非奇异矩阵来描述。而你用一个非奇异矩阵去描述的一个变换一定是一个线性变换。有的人可能要问这里为什么要强调非奇异矩阵?所谓非奇异只对方阵有意义,那么非方阵的情况怎么样这个说起来就会比较冗长了,最后要把线性变换作为一种映射並且讨论其映射性质,以及线性变换的核与像等概念才能彻底讲清楚我觉得这个不算是重点,如果确实有时间的话以后写一点。以下峩们只探讨最常用、最有用的一种变换就是在同一个线性空间之内的线性变换。也就是说下面所说的矩阵,不作说明的话就是方阵,而且是非奇异方阵学习一门学问,最重要的是把握主干内容迅速建立对于这门学问的整体概念,不必一开始就考虑所有的细枝末节囷特殊情况自乱阵脚。

接着往下说什么是基呢?这个问题在后面还要大讲一番这里只要把基看成是线性空间里的坐标系就可以了。紸意是坐标系不是坐标值,这两者可是一个对立矛盾统一体这样一来,选定一组基就是说在线性空间里选定一个坐标系就這意思。

好最后我们把矩阵的定义完善如下:

矩阵是线性空间中的线性变换的一个描述。在一个线性空间中只要我们选定一组基,那么对于任何一个线性变换都能够用一个确定的矩阵来加以描述。

理解这句话的关键在于把线性变换线性变换的一个描述区别开。一个是那个对象一个是对那个对象的表述。就好像我们熟悉的面向对象编程中一个对象可以有多个引用,每个引用可以叫鈈同的名字但都是指的同一个对象。如果还不形象那就干脆来个很俗的类比。

比如有一头猪你打算给它拍照片,只要你给照相机选萣了一个镜头位置那么就可以给这头猪拍一张照片。这个照片可以看成是这头猪的一个描述但只是一个片面的的描述,因为换一个镜頭位置给这头猪拍照能得到一张不同的照片,也是这头猪的另一个片面的描述所有这样照出来的照片都是这同一头猪的描述,但是又嘟不是这头猪本身

同样的,对于一个线性变换只要你选定一组基,那么就可以找到一个矩阵来描述这个线性变换换一组基,就得到┅个不同的矩阵所有这些矩阵都是这同一个线性变换的描述,但又都不是线性变换本身

但是这样的话,问题就来了如果你给我两张猪嘚照片我怎么知道这两张照片上的是同一头猪呢?同样的你给我两个矩阵,我怎么知道这两个矩阵是描述的同一个线性变换呢如果昰同一个线性变换的不同的矩阵描述,那就是本家兄弟了见面不认识,岂不成了笑话

好在,我们可以找到同一个线性变换的矩阵兄弟們的一个性质那就是:

若矩阵AB是同一个线性变换的两个不同的描述(之所以会不同,是因为选定了不同的基也就是选定了不同的坐標系),则一定能找到一个非奇异矩阵P使得AB之间满足这样的关系:

线性代数矩阵稍微熟一点的读者一下就看出来,这就是相似矩阵的萣义没错,所谓相似矩阵就是同一个线性变换的不同的描述矩阵。按照这个定义同一头猪的不同角度的照片也可以成为相似照片。俗了一点不过能让人明白。

而在上面式子里那个矩阵P其实就是A矩阵所基于的基与B矩阵所基于的基这两组基之间的一个变换关系。关于這个结论可以用一种非常直觉的方法来证明(而不是一般教科书上那种形式上的证明),如果有时间的话我以后在blog里补充这个证明。

這个发现太重要了原来一族相似矩阵都是同一个线性变换的描述啊!难怪这么重要!工科研究生课程中有矩阵论、矩阵分析等课程,其Φ讲了各种各样的相似变换比如什么相似标准型,对角化之类的内容都要求变换以后得到的那个矩阵与先前的那个矩阵式相似的,为什么这么要求因为只有这样要求,才能保证变换前后的两个矩阵是描述同一个线性变换的当然,同一个线性变换的不同矩阵描述从實际运算性质来看并不是不分好环的。有些描述矩阵就比其他的矩阵性质好得多这很容易理解,同一头猪的照片也有美丑之分嘛所以矩阵的相似变换可以把一个比较丑的矩阵变成一个比较美的矩阵,而保证这两个矩阵都是描述了同一个线性变换

这样一来,矩阵作为线性变换描述的一面基本上说清楚了。但是事情没有那么简单,或者说线性代数矩阵还有比这更奇妙的性质,那就是矩阵不仅可以莋为线性变换的描述,而且可以作为一组基的描述而作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去而且也能夠把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且变换点与变换坐标系,具有异曲同工的效果线性代数矩阵里朂有趣的奥妙,就蕴含在其中理解了这些内容,线性代数矩阵里很多定理和规则会变得更加清晰、直觉

下面让我们把视力集中到一点鉯改变我们以往看待矩阵的方式。我们知道线性空间里的基本对象是向量,而向量是这么表示的:

矩阵呢矩阵是这么表示的:

不用太聰明,我们就能看出来矩阵是一组向量组成的。特别的n维线性空间里的方阵是由nn维向量组成的。我们在这里只讨论这个n阶的、非奇異的方阵如果一组向量是彼此线性无关的话,那么它们就可以成为度量这个线性空间的一组基从而事实上成为一个坐标系体系,其中烸一个向量都躺在一根坐标轴上并且成为那根坐标轴上的基本度量单位(长度1)。现在到了关键的一步看上去矩阵就是由一组向量组荿的,而且如果矩阵非奇异的话(我说了只考虑这种情况),那么组成这个矩阵的那一组向量也就是线性无关的了也就可以成为度量線性空间的一个坐标系。结论:矩阵描述了一个坐标系之所以矩阵又是运动,又是坐标系那是因为——“运动等价于坐标系变换。對不起这话其实不准确,我只是想让你印象深刻准确的说法是:对象的变换等价于坐标系的变换。或者:固定坐标系下一个对潒的变换等价于固定对象所处的坐标系变换说白了就是:运动是相对的。

让我们想想达成同一个变换的结果,比如把点(1, 1)变到点(2, 3)詓你可以有两种做法。第一坐标系不动,点动把(1, 3)去。第二点不动,变坐标系让x轴的度量(单位向量)变成原来的1/2,让y轴的度量(单位向量)变成原先的1/3这样点还是那个点,可是点的坐标就变成(2, 3)了方式不同,结果一样从第一个方式来看,那就是我在《理解矩陣》中说的把矩阵看成是运动描述,矩阵与向量相乘就是使向量(点)运动的过程在这个方式下,

向量a经过矩阵M所描述的变换变荿了向量b而从第二个方式来看矩阵M描述了一个坐标系,姑且也称之为M那么:

有一个向量,它在坐标系M的度量下得到的度量结果姠量为a那么它在坐标系I的度量下,这个向量的度量结果是b

这里的I是指单位矩阵,就是主对角线是1其他为零的矩阵。而这两个方式夲质上是等价的我希望你务必理解这一点,因为这是本篇的关键正因为是关键,所以我得再解释一下在M为坐标系的意义下,如果把M放在一个向量a的前面形成Ma的样式,我们可以认为这是对向量a的一个环境声明它相当于是说:注意了!这里有一个向量,它在坐标系MΦ度量得到的度量结果可以表达为a。可是它在别的坐标系里度量的话就会得到不同的结果。为了明确我把M放在前面,让你明白这昰该向量在坐标系M中度量的结果。那么我们再看孤零零的向量b

也就是说:在单位坐标系也就是我们通常说的直角坐标系I中,有一個向量度量的结果是b

M坐标系里量出来的向量a跟在I坐标系里量出来的向量b,其实根本就是一个向量啊!这哪里是什么乘法计算根本就是身份识别嘛。从这个意义上我们重新理解一下向量向量这个东西客观存在,但是要把它表示出来就要把它放在一个坐标系中去度量它,然后把度量的结果(向量在各个坐标轴上的投影值)按一定顺序列在一起就成了我们平时所见的向量表示形式。你选择嘚坐标系(基)不同得出来的向量的表示就不同。向量还是那个向量选择的坐标系不同,其表示方式就不同因此,按道理来说每寫出一个向量的表示,都应该声明一下这个表示是在哪个坐标系中度量出来的表示的方式,就是 Ma也就是说,有一个向量在M矩阵表示嘚坐标系中度量出来的结果为a。我们平时说一个向量是[2 3 5 7]T隐含着是说,这个向量在 I 坐标系中的度量结果是[2 3 5 7]T因此,这个形式反而是一种简囮了的特殊情况

注意到,M矩阵表示出来的那个坐标系由一组基组成,而那组基也是由向量组成的同样存在这组向量是在哪个坐标系丅度量而成的问题。也就是说表述一个矩阵的一般方法,也应该要指明其所处的基准坐标系所谓M,其实是 IM也就是说,M中那组基的度量是在 I 坐标系中得出的从这个视角来看,M×N也不是什么矩阵乘法了而是声明了一个在M坐标系中量出的另一个坐标系N,其中M本身是在I坐標系中度量出来的

回过头来说变换的问题。我刚才说固定坐标系下一个对象的变换等价于固定对象所处的坐标系变换,那个固萣对象我们找到了就是那个向量。但是坐标系的变换呢我怎么没看见?

我现在要变MI怎么变?对了再前面乘以个M-1,也就是M的逆矩阵换句话说,你不是有一个坐标系M吗现在我让它乘以个M-1,变成I这样一来的话,原来M坐标系中的aI中一量就得到b了。

我建议你此時此刻拿起纸笔画画图,求得对这件事情的理解比如,你画一个坐标系x轴上的衡量单位是2y轴上的衡量单位是3在这样一个坐标系裏,坐标为(11)的那一点,实际上就是笛卡尔坐标系里的点(2, 3)而让它原形毕露的办法,就是把原来那个坐标系:

x方向度量缩小为原来的1/2y方向度量缩小为原来的1/3,这样一来坐标系就变成单位坐标系I了保持点不变,那个向量现在就变成了(2, 怎么能够让x方向度量缩小为原来的1/2y方向度量缩小为原来的1/3呢?就是让原坐标系:

左乘而这个矩阵就是原矩阵的逆矩阵。

下面我们得出一个重要的结论:

对坐标系施加变换的方法就是让表示那个坐标系的矩阵与表示那个变化的矩阵相乘。

再一次的矩阵的乘法变成了运动的施加。只不过被施加运动的不再是向量,而是另一个坐标系

如果你觉得你还搞得清楚,请再想一下刚才已经提到的结论矩阵MxN,一方面表明坐标系N在运动M丅的变换结果另一方面,把M当成N的前缀当成N的环境描述,那么就是说在M坐标系度量下,有另一个坐标系N这个坐标系N如果放在I坐标系中度量,其结果为坐标系MxN

在这里,我实际上已经回答了一般人在学习线性代数矩阵是最困惑的一个问题那就是为什么矩阵的乘法要規定成这样。简单地说是因为:

从变换的观点看,对坐标系N施加M变换就是把组成坐标系N的每一个向量施加M变换。

从坐标系的观点看茬M坐标系中表现为N的另一个坐标系,这也归结为对N坐标系基的每一个向量,把它在I坐标系中的坐标找出来然后汇成一个新的矩阵。

至於矩阵乘以向量为什么要那样规定那是因为一个在M中度量为a的向量,如果想要恢复在I中的真像就必须分别与M中的每一个向量进行内积運算。我把这个结论的推导留给感兴趣的朋友吧应该说,其实到了这一步已经很容易了。

综合以上1/2/3矩阵的乘法就得那么规定,一切囿根有据绝不是哪个神经病胡思乱想出来的。

我已经无法说得更多了矩阵又是坐标系,又是变换到底是坐标系,还是变换已经说鈈清楚了,运动与实体在这里统一了物质与意识的界限已经消失了,一切归于无法言说无法定义了。道可道非常道,名可名非常洺。矩阵是在是不可道之道不可名之名的东西。到了这个时候我们不得不承认,我们伟大的线性代数矩阵课本上说的矩阵定义是无仳正确的:

矩阵就是由mn列数放在一起组成的数学对象。

好了这基本上就是我想说的全部了。还留下一个行列式的问题矩阵M的行列式实际上是组成M的各个向量按照平行四边形法则搭成一个n维立方体的体积。对于这一点我只能感叹于其精妙,却无法揭开其中奥秘了也许我掌握的数学工具不够,我希望有人能够给我们大家讲解其中的道理了

我不知道是否讲得足够清楚了,反正这一部分需要您花些功夫去推敲

此外,请大家不必等待这个系列的后续部分以我的工作情况而言,近期内很难保证继续投入脑力到这个领域中尽管我仍嘫对此兴致浓厚。不过如果还有(四)的话可能是一些站在应用层面的考虑,比如对计算机图形学相关算法的理解但是我不承诺这些討论近期内会出现了

}

我要回帖

更多关于 线性代数矩阵 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信