![MATLAB金融风险管理师FRM(高阶实战)](https://wfqqreader-1252317822.image.myqcloud.com/cover/187/36862187/b_36862187.jpg)
2.5 正定性
正定性(positive definiteness)是凸优化问题经常出现的矩阵概念。这一小节简单了解矩阵正定性。矩阵正定性分为如下几种情况:
矩阵A为正定矩阵(positive definite matrix),则xTAx > 0, x ≠ 0 (x为非零列向量)。
矩阵A为负定矩阵(negative definite matrix),则xTAx < 0, x ≠ 0 (x为非零列向量)。
矩阵A为半正定矩阵(positive semi-definite matrix),则xTAx ≥ 0, x ≠ 0 (x为非零列向量)。
矩阵A为半负定矩阵(negative semi-definite matrix),则xTAx ≤ 0, x ≠ 0 (x为非零列向量)。
矩阵不属于以上任何一种情况,矩阵被称作不定矩阵(indefinite matrix)。
判断矩阵是否为正定矩阵,本册主要采用如下三种方法。
若矩阵为对称矩阵,并且所有特征值为正,则矩阵为正定矩阵。
若矩阵进行Cholesky分解,则矩阵为正定矩阵。
称矩阵A主子式(principal minors)均大于0。
前两种方法对应代码如下:
issymmetric(A) lambdas = eig(A) isposd ef = all(lambdas > 0) [~,positive_def_flag] = chol(A) % positive_def_flag % flag = 0, then the input matrix is symmetric positive definite
用主子式判断正定矩阵,用下例3 × 3 方阵A:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P90_3712326.jpg?sign=1738879381-pSONrSN3emriPRTpUMP5BV8OJRHd4kth-0-e67be9fef87153a11317eedf8419c734)
A的三个顺序主子式如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P90_3712327.jpg?sign=1738879381-327qd4WzasBpd1NXE5OyDkcph13tfmxj-0-64896008f8fb1f84f50ee85f2b143a49)
很容发现这三个顺序主子式均大于零,因此A为正定矩阵。
若矩阵A为负定矩阵,则A的特征值均为负值。矩阵A为半正定矩阵,则矩阵A特征值为正值或0。矩阵A为半负定矩阵,则矩阵特征值为负值或0。
下面简单说明一下矩阵特征值、特征向量和矩阵正定性关系。非零向量x为矩阵A特征向量,λ为对应特征值,则下式成立:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P90_3712329.jpg?sign=1738879381-IrONoxnZhcsw3ZVoH0T6hdfwZAR0FR5m-0-37de566e5c4d36f57756b921fd46e8fb)
x为非零向量,则xTx > 0;若特征值λ大于0,则λxTx > 0,即xTAx > 0。
A进行Cholesky分解,xTAx写成如下形式:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P90_3712330.jpg?sign=1738879381-kKHyjDMhFl04oRgawsJw1LdmGfphLEqu-0-1c396e01aca6304cdb4893270859e829)
R中列向量线性无关,若x为非零向量,则Rx ≠ 0,因此上式xTAx > 0。值得注意,在一般情况,资产收益率方差-协方差矩阵都是正定矩阵,这一点在投资组合优化问题中很重要。为更直观地理解矩阵正定性,我们从几何角度来解释。
对于一个2 × 2对称矩阵A,构造如下二元函数:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P91_3712331.jpg?sign=1738879381-kOVHEvUzIzFhl5cVujVgou9kQShK0jjE-0-fc014913dd2b2469d531d06ef257af58)
在x-y-z正交空间中,当矩阵A正定性不同时,z = f(x, y)对应曲面会有不同性质,如图2.35所示。图2.35(a)所示A为正定矩阵时,z = f(x, y)曲面为凸面;该曲面又叫作椭圆抛物面(elliptic paraboloid)。当A为负定矩阵时,z = f(x, y)曲面为凹面,如图2.35(b)所示。图2.35(c)和(d)分别展示A为半正定和半负定矩阵时,z = f(x, y)曲面形状;这两个曲面分别为山谷面(valley surface)和山脊面(ridge surface)。图2.35(e)和(f)展示矩阵A为不定条件下,z = f(x, y)曲面形状,该曲面形状叫作双曲抛物面(hyperbolic paraboloid),又常被称作马鞍面(saddle surface)。本册数学部分和优化部分将会从不同角度研究这几种曲面。本节以实例讨论这几种正定性和对应曲面几何意义。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P91_3712332.jpg?sign=1738879381-oLHpabbRoub3Z5kp8WKz6Fx4INKVVO8x-0-ec5a0c5c3b414ac4bbf32577689db7be)
图2.35 矩阵正定性几何意义
先来看一个2 × 2正定矩阵例子。矩阵A具体值如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P91_3712333.jpg?sign=1738879381-Hj1J61OIn6jPbK3qpIFzMUy2XYUGpAHj-0-133964ed72c46e092af07c9a6804c21d)
容易求得A特征值分别为λ1 = 1和λ2 = 2,对应特征向量分别如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P92_3712334.jpg?sign=1738879381-Tb1RHANrg2h2wrH0N6Xz08WIFo1LtpNo-0-8847f7129d4fe658f164b1a43ede490b)
图2.36展示z = f(x, y)曲面两个不同视角视图。在该曲面边缘任意一点放置一个小球,小球都会朝着曲面最低点滚动。图2.36中点A、B和C为三个例子;曲面坡度不同,因此不同点朝下滚动时初始“加速度”大小和方向都可能会有所不同,本章后文会用梯度向量来量化该“加速度”。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P92_3712335.jpg?sign=1738879381-z8hmq9GEMKoTl2A33u7pG5SyrF2B5E4Y-0-b1424f56d6532a1e063a6435bb4d82ae)
图2.36 正定矩阵
再看一个2 × 2旋转正定矩阵情况。A矩阵具体如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P92_3712336.jpg?sign=1738879381-Xc7Uii77R0WcAWpqPTDL8FycD7qraOGO-0-6e73971b59e1a88f11e80824aa7d84ee)
经过计算得到A特征值也是λ1 = 1和λ2 = 2,这两个特征值对应特征向量分别如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712337.jpg?sign=1738879381-QSPZKn3iwpS8LPFxXR3v48FNs1GL69DJ-0-05be0049bd6fa7e68a07d3cd57f3a667)
z = f(x, y)曲面对应图像如图2.37。借用坐标旋转,坐标点(x, y)绕原点顺时针(clockwise)旋转θ到达(X, Y),通过下式获得:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712338.jpg?sign=1738879381-EDl8oiqXyfb4ktEKRfBdDzWlAgG2LEce-0-92236e3242c755a04e021807497c978a)
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712339.jpg?sign=1738879381-IpL4kD9DiyerJXVxNjGex8XIAvmkyEdc-0-502d07ea475703015e3d46ce3a6dfd66)
图2.37 旋转得到正定矩阵曲面
很容易发现,(x, y)经过顺时针45°旋转到达(X, Y)点:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712340.jpg?sign=1738879381-84Knepzd2eIuinRe4ZwFHXZw8ii1ZPfE-0-0999f5982f6820117389172842f74a72)
即
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712341.jpg?sign=1738879381-vRVjON5Np62IxR16HLNcKwKhJta2GdUs-0-b9a476ed31247a9a958a549cdb3056ab)
当X和Y都不为零,即[X; Y] 为非零向量时,上式恒大于0。
特殊情况下,若特征值相等,椭圆抛物面为正圆抛物面:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P93_3712342.jpg?sign=1738879381-jZdFqTWlISPvHtcPmEH7w1wC5LtuHu5K-0-3cdc458ac95b31c74b8e8cf463777214)
在图2.38曲面最小值点放置一个小球,若小球受到任何扰动,小球仍然会回落到最低点。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P94_3712343.jpg?sign=1738879381-fzd7kKHuhzhHxGSSG7f0AEeGKGTadSvd-0-8a6423977bf1c4d63c16b9824156839a)
图2.38 特征值相等且大于零时,曲面形状
下面讨论一下负定矩阵情况。下式中,A为负定矩阵:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P94_3712344.jpg?sign=1738879381-HaJgo7Y046fEb99KqPwultqpMKcenSgL-0-3d8a4bf7191c71ceb60bb7e92a17db32)
很容易求得A特征值分别为λ1 = -2和λ2 = -1,对应特征向量分别如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P94_3712345.jpg?sign=1738879381-ouUbVigGi9OBuwos4dYaxnXAeHginTby-0-d207f9e49c0a3051758e951f7ac59c1f)
图2.39展示负定矩阵对应曲面;发现z = f(x, y)对应曲面为凹面。在曲面最大值处放置一个小球,小球处于不稳定平衡状态。受到轻微扰动后,小球沿着任意方向运动,都会下落。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P94_3712347.jpg?sign=1738879381-90dAkQLL7X8hOnP2pZs6dNYrfe1mdtcW-0-222918612b4145f131bef3beee06a7a4)
图2.39 负定矩阵对应曲面
下面来聊一聊半正定矩阵情况。矩阵A取值如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P94_3712348.jpg?sign=1738879381-avjUCn9mSTQ4fqkk5QqUhYrivlGMDm5S-0-f7b72ffa5cabcc2e6c273bc2b50ff8fc)
经过计算,矩阵A特征值分别为λ1 = 0和λ2 = 1;这两个特征值对应特征向量分别如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P95_3712349.jpg?sign=1738879381-jeTFl52z3Hl2eFCkGEIAZ71WL4KSWvhx-0-f4dd2d01a897233958f8b94c85d655ee)
图2.40展示z = f(x, y)对应曲面;除了位于y轴上点以外,任意点处放置一个小球,小球都会滚动到山谷面谷底。谷底位置对应一条直线,这条直线上每一点都是函数z = f(x, y)最小值。小球在特征值为0对应特征向量方向运动,函数值没有任何变化。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P95_3712350.jpg?sign=1738879381-tR5qx3urPQf7roHFJi2vAGK7xLoWDhUr-0-5cc8ad7ad686ce360cd7f690a0486eb5)
图2.40 半正定矩阵对应曲面
下式A为半正定矩阵:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P95_3712351.jpg?sign=1738879381-8OgFrCR45g2yhMGwMZSx40JYuWLyz1kP-0-26e3dd6c0be8a58033045696abea1fef)
矩阵A特征值为λ1 = 0和λ2 = 1,对应特征向量如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P95_3712352.jpg?sign=1738879381-Tyr6N5ZTHQUxi7bQEBSFcuN91Ce6Trkt-0-9e441d76e2115df0537f2ea2e8367562)
图2.41展示旋转山谷面。同样,小球沿v1(特征值为0对应特征向量)方向运动,函数值没有任何变化。值得指出,x和y线性相关。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P96_3712353.jpg?sign=1738879381-SPZRZARf3pbEvp1m0UxtqU4truCoCWyn-0-b2c08131612bc91f15522a0ed86417db)
图2.41 旋转山谷面
下面看一个半负定矩阵情况,矩阵A具体值如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P96_3712354.jpg?sign=1738879381-h3HGSlvRr9NExtJZ3IH1MMJL3MYa6h1U-0-ade973158b1652c60dfac58985b562b7)
求得矩阵A对应特征值为λ1 = -1和λ2 = 0,对应特征向量如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P96_3712355.jpg?sign=1738879381-bk2SLmhfHCnLvtEPOkE4ZiMJ8dV4o9uW-0-e3c860c06e85add251ee9786122a7a6e)
图2.42展示半负定矩阵对应山脊面,发现曲面有无数个最大值。在任意最大值处放置一个小球,受到扰动后,小球会沿着曲面滚下。和山谷面一样,小球沿v2(特征值为0对应特征向量)方向运动,函数值没有任何变化。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P96_3712356.jpg?sign=1738879381-JPM1ycbUX2SaVVGkgCvZxN8UEZbkyEWG-0-2e9c3f4e4cb2034e1e2c193b0c339586)
图2.42 半负定矩阵对应山脊面
本节最后看一下不定矩阵情况。A为不定矩阵如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P97_3712357.jpg?sign=1738879381-1VXIsceeEZSCo6dq6R0gbxC2Wwgjofad-0-b16e47c107864c8284f856d80597c810)
求得矩阵A对应特征值为λ1 = -1和λ2 = 1,对应特征向量如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P97_3712358.jpg?sign=1738879381-oVKhMf5WbSMLFMILlV1UrEM8pvMLBdtY-0-dae646e7fbabaed50db8a5dfd6b98f8e)
图2.43展示z = f(x, y)对应曲面。当z不为零时,曲面对应等高线为双曲线;当z为零时,曲面对应等高线是两条在x-y平面内直线(图2.43中深色轨道),这两条直线即双曲线渐近线。图2.43告诉我们,曲面边缘不同位置放置小球会有完全不同结果;A点和B点处松手小球会向中心方向滚动,C点小球会朝远离中心方向滚动。
图2.43所示马鞍面中心既不是极小值点(如图2.36曲面),也不是极大值点(如图2.39曲面);图2.43中马鞍面中心点被称作为鞍点(saddle point)。另外,沿着图2.43中深色轨道运动,小球高度没有任何变化。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P97_3712359.jpg?sign=1738879381-n2Iw85DGD6CYcCdsLoRioZBe7DZDl6Xm-0-44926f96e1b877c5ad4110655f00b600)
图2.43 不定矩阵对应曲面
图2.43中马鞍面顺时针旋转45°得到图2.44曲面。图2.44曲面对应矩阵A如下:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P98_3712361.jpg?sign=1738879381-Lk5iq1xXO2bhUtE3sZqRSAeeBuklceQT-0-a24e607fdb5b5d86e867658a06c808f7)
在z = f(x, y)为非零定值时,发现上式为反比例函数。
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P98_3712362.jpg?sign=1738879381-6XMhJte4O0uj13qMiey6d5Cw7iMmSj1b-0-fa313dca60ecf20e665d87005fd9cc28)
图2.44 旋转不定矩阵对应曲面
以下代码获得本节图像。
B4_Ch1_6.m clc; clear all; close all syms x y x0 = 0; y0 = 0; r = 2; num = 30; [xx_fine,yy_fine] = mesh_circ(x0,y0,r,num); A = [1, 0; 0, 1;]; % A = [1, 0; 0, 2;]; % % A = [-1, 0; 0, -2;]; % % A = [1, 0; 0, -1;]; % % A = [0, 1/2; 1/2, 0;]; % A = [1, 0; 0, -1;]; % % A = [0, 1/2; 1/2, 0;]; % % A = [1, 0; 0, 0;]; % % A = [0, 0; 0, -1;]; theta_deg = 0; % please update the theta theta = deg2rad(theta_deg); R = [cos(theta), -sin(theta); sin(theta), cos(theta)] inv_R = inv(R) A_new = inv_R*A*R f = [x, y]*A_new*[x; y]; simplify(f) vpa(simplify(f),5) issymmetric(A_new) lambdas = eig(A_new) isposdef = all(lambdas > 0) [~,positive_def_flag] = chol(A_new) % positive_def_flag % flag = 0, then the input matrix is symmetric positive definite ff_fine = double(subs(f, [x y], {xx_fine,yy_fine})); figure(1) c_levels = min(ff_fine(:)):(max(ff_fine(:))-min(ff_fine(:)))/9:max(ff_fine(:)); h = mesh(xx_fine,yy_fine,ff_fine); hold on h.EdgeColor = [1,1,1]/2; [~,h2] = contour3(xx_fine,yy_fine,ff_fine) h2.LevelList = c_levels; h2.LineWidth = 1.25; grid off; box off hAxis = gca; set(gca,'xtick',[]) set(gca,'ytick',[]) set(gca,'ztick',[]) xlabel('x');ylabel('y');zlabel('z'); hAxis.XRuler.FirstCrossoverValue = 0; % X crossover with Y axis hAxis.YRuler.FirstCrossoverValue = 0; % Y crossover with X axis hAxis.ZRuler.FirstCrossoverValue = 0; % Z crossover with X axis hAxis.ZRuler.SecondCrossoverValue = 0; % Z crossover with Y axis hAxis.XRuler.SecondCrossoverValue = 0; % X crossover with Z axis hAxis.YRuler.SecondCrossoverValue = 0; % Y crossover with Z axis view(-45,60) view(-30,90) xlim([min(xx_fine(:))*1.2,max(xx_fine(:))*1.2]) ylim([min(yy_fine(:))*1.2,max(yy_fine(:))*1.2]) zlim([min(ff_fine(:))-1,max(ff_fine(:))+1]) function [xx,yy] = mesh_circ(x0,y0,r,num) theta = [0:pi/num:2*pi]; r = [0:r/num:r]; [theta,r] = meshgrid(theta,r); xx = cos(theta).*r + x0; yy = sin(theta).*r + y0; end