精华内容
下载资源
问答
  • 对称矩阵的特征值个数
    千次阅读
    2021-04-05 09:17:31

    一 算法原理

    雅可比方法用于求解实对称矩阵的特征值和特征向量,对于实对称矩阵 A A A,必有正交矩阵 U U U,使得 U T A U = D U^{T}AU=D UTAU=D. D D D是一个对角阵,主对角线的元素是矩阵 A A A的特征值,正交矩阵 U U U的每一列对应于属于矩阵 D D D的主对角线对应元素的特征向量.
    雅可比方法用平面旋转对矩阵 A A A做相似变换,化 A A A为对角阵,从而求解出特征值和特征向量.旋转矩阵 U p q U_p{_q} Upq,是一个单位阵在第 p p p行,第 p p p列,第 q q q行,第 q q q列,元素为 c o s φ cos\varphi cosφ,第 p p p行第 q q q列为 − s i n φ -sin\varphi sinφ,第 q q q行第 p p p列为 s i n φ sin\varphi sinφ.对于这样的平面旋转矩阵,不难验证其是一种正交矩阵.因此对于向量 x x x, U p q x U_p{_q}x Upqx等同于把第 p p p个坐标轴和第 q q q个坐标轴共同所确定的平面旋转了 φ \varphi φ度.记矩阵 A 1 = U p q T A U p q A_1=U_p{_q}^{T}AU_p{_q} A1=UpqTAUpq.因为旋转矩阵是正交阵,因此实际上矩阵 A 1 A_1 A1与矩阵 A A A是相似的,因此其特征值是相同的.
    设矩阵 A 1 A_1 A1 i i i行,第 j j j列的元素为 b i j b_i{_j} bij,矩阵 A A A的第 i i i行,第 j j j列的元素为 a i j a_i{_j} aij( i = 0 , 1 , 2 , . . . , n − 1 , j = 0 , 1 , 2 , . . . , n − 1 i=0,1,2,...,n-1,j=0,1,2,...,n-1 i=0,1,2,...,n1,j=0,1,2,...,n1).式(1-1-1)给出了两矩阵元素之间的运算关系.
    { b p p = a p p c o s 2 φ + a q q s i n 2 φ + 2 a p q c o s φ s i n φ b q q = a p p s i n 2 φ + a q q c o s 2 φ − 2 a p q c o s φ s i n φ b p q = b q p = 1 2 ( a q q − a p p ) s i n 2 φ + a p q c o s 2 φ b p i = a p i c o s φ + a q i s i n φ , ( i ≠ p , q ) b q i = − a p i s i n φ + a q i c o s φ , ( i ≠ p , q ) b j p = a j p c o s φ + a j q s i n φ , ( j ≠ p , q ) b j q = − a j q s i n φ + a j q c o s φ , ( j ≠ p , q ) b i j = b j i = a i j , i ≠ p , q ; j ≠ p , q (1-1-1) \begin{cases} b_p{_p}=a_p{_p}cos^2\varphi+a_q{_q}sin^2\varphi+2a_p{_q}cos\varphi{sin\varphi}\\ b_q{_q}=a_p{_p}sin^2\varphi+a_q{_q}cos^2\varphi-2a_p{_q}cos\varphi{sin\varphi}\\ b_p{_q}=b_q{_p}=\frac{1}2(a_q{_q}-a_p{_p})sin2\varphi+a_p{_q}cos2\varphi\\ b_p{_i}=a_p{_i}cos\varphi+a_q{_i}sin\varphi,(i\ne{p},q)\\ b_q{_i}=-a_p{_i}sin\varphi+a_q{_i}cos\varphi,(i\ne{p},q)\\ b_j{_p}=a_j{_p}cos\varphi+a_j{_q}sin\varphi,(j\ne{p},q)\\ b_j{_q}=-a_j{_q}sin\varphi+a_j{_q}cos\varphi,(j\ne{p},q)\\ b_i{_j}=b_j{_i}=a_i{_j},i{\ne}p,q;j{\ne}p,q \end{cases} \tag{1-1-1} bpp=appcos2φ+aqqsin2φ+2apqcosφsinφbqq=appsin2φ+aqqcos2φ2apqcosφsinφbpq=bqp=21(aqqapp)sin2φ+apqcos2φbpi=apicosφ+aqisinφ,(i=p,q)bqi=apisinφ+aqicosφ,(i=p,q)bjp=ajpcosφ+ajqsinφ,(j=p,q)bjq=ajqsinφ+ajqcosφ,(j=p,q)bij=bji=aij,i=p,q;j=p,q(1-1-1)
    其中有两点需要说明:(1) p p p, q q q分别是前一次的迭代矩阵的非主对角线上绝对值最大元素的行列号
    (2) φ \varphi φ是旋转角度,可以由式(1-1-2)确定
    t a n 2 φ = − 2 a p q a q q − a p p (1-1-2) tan2\varphi=\frac{-2a_p{_q}}{a_q{_q}-a_p{_p}} \tag{1-1-2} tan2φ=aqqapp2apq(1-1-2)
    归纳得到雅可比方法求解矩阵特征值和特征向量的具体步骤如下:
    (1).初始化特征向量为对角阵V,主对角线元素为1,其他元素为0.
    (2).在 A A A的非主对角线的元素中,找到绝对值最大元素 a p q a_p{_q} apq.
    (3).用式(1-1-2)计算出旋转矩阵
    (4).计算矩阵 A 1 A1 A1,用当前的矩阵 V V V乘旋转矩阵得到当前的特征矩阵 V V V.
    (5).若当前迭代的矩阵 A A A的非主对角线元素最大值小于给定阈值,停止计算,否则执行上述过程.停止计算时,特征值为矩阵 A A A的主对角线元素,特征矩阵为矩阵 V V V.


    二 C语言实现

    #include<stdio.h>
    #include<stdlib.h>
    float** Matrix_Jac_Eig(float **array, int n, float *eig);
    int Matrix_Free(float **tmp, int m, int n);
    int main(void)
    {
    	int n;
    	printf("请输入矩阵维度:\n");
    	scanf("%d", &n);
    	float **array = (float **)malloc(n * sizeof(float *));
    	if (array == NULL)
    	{
    		printf("error :申请数组内存空间失败\n");
    		return -1;
    	}
    	for (int i = 0; i < n; i++)
    	{
    		array[i] = (float *)malloc(n * sizeof(float));
    		if (array[i] == NULL)
    		{
    			printf("error :申请数组子内存空间失败\n");
    			return -1;
    		}
    	}
    	printf("请输入矩阵元素:\n");
    	for (int i = 0; i < n; i++)
    	{
    		for (int j = 0; j < n; j++)
    		{
    			scanf("%f", &array[i][j]);
    		}
    	}
    	float *eig = (float *)malloc(n * sizeof(float));
    	float **Result = Matrix_Jac_Eig(array, n, eig);
    	printf("特征矩阵元素:\n");
    	for (int i = 0; i < n; i++)
    	{
    		for (int j = 0; j < n; j++)
    		{
    			printf("%f ", Result[i][j]);
    		}
    		printf("\n");
    	}
    	printf("特征矩阵元素:\n");
    	for (int i = 0; i < n; i++)
    	{
    		printf("%f \n", eig[i]);
    	}
    	Matrix_Free(Result, n, n);
    	free(eig);
    	eig = NULL;
    	return 0;
    }
    float** Matrix_Jac_Eig(float **array, int n, float *eig)
    {
    	//先copy一份array在temp_mat中,因为我实在堆区申请的空间,在对其进行处理
    	//的过程中会修改原矩阵的值,因此要存储起来,到最后函数返回的
    	//时候再重新赋值
    	int i, j, flag, k;
    	flag = 0;
    	k = 0;
    	float sum = 0;
    	float **temp_mat = (float **)malloc(n * sizeof(float *));
    	for (i = 0; i < n; i++)
    	{
    		temp_mat[i] = (float *)malloc(n * sizeof(float));
    	}
    	for (i = 0; i < n; i++)
    	{
    		for (j = 0; j < n; j++)
    		{
    			temp_mat[i][j] = array[i][j];
    		}
    	}
    	//判断是否为对称矩阵
    	for (i = 0; i < n; i++)
    	{
    		for (j = i; j < n; j++)
    		{
    			if (array[i][j] != array[j][i])
    			{
    				flag = 1;
    				break;
    			}
    		}
    	}
    	if (flag == 1)
    	{
    		printf("error in Matrix_Eig: 输入并非是对称矩阵:\n");
    		return NULL;
    	}
    	else
    	{
    		//开始执行算法
    		int p, q;
    		float thresh = 0.0000000001;
    		float max = array[0][1];
    		float tan_angle, sin_angle, cos_angle;
    		float **result = (float **)malloc(n * sizeof(float *));
    		if (result == NULL)
    		{
    			printf("error in Matrix_Eig:申请空间失败\n");
    			return NULL;
    		}
    		float **result_temp = (float **)malloc(n * sizeof(float *));
    		if (result_temp == NULL)
    		{
    			printf("error in Matrix_Eig:申请空间失败\n");
    			return NULL;
    		}
    		float **rot = (float **)malloc(n * sizeof(float *));
    		if (rot == NULL)
    		{
    			printf("error in Matrix_Eig:申请空间失败\n");
    			return NULL;
    		}
    		float **mat = (float **)malloc(n * sizeof(float *));
    		if (mat == NULL)
    		{
    			printf("error in Matrix_Eig:申请空间失败\n");
    			return NULL;
    		}
    		for (i = 0; i < n; i++)
    		{
    			result[i] = (float *)malloc(n * sizeof(float));
    			if (result[i] == NULL)
    			{
    				printf("error in Matrix_Eig:申请子空间失败\n");
    				return NULL;
    			}
    			result_temp[i] = (float *)malloc(n * sizeof(float));
    			if (result_temp[i] == NULL)
    			{
    				printf("error in Matrix_Eig:申请子空间失败\n");
    				return NULL;
    			}
    			rot[i] = (float *)malloc(n * sizeof(float));
    			if (rot[i] == NULL)
    			{
    				printf("error in Matrix_Eig:申请子空间失败\n");
    				return NULL;
    			}
    			mat[i] = (float *)malloc(n * sizeof(float));
    			if (mat[i] == NULL)
    			{
    				printf("error in Matrix_Eig:申请子空间失败\n");
    				return NULL;
    			}
    		}
    		for (i = 0; i < n; i++)
    		{
    			for (j = 0; j < n; j++)
    			{
    				if (i == j)
    				{
    					result[i][j] = 1;
    				}
    				else
    				{
    					result[i][j] = 0;
    				}
    			}
    		}
    		for (i = 0; i < n; i++)
    		{
    			for (j = 0; j < n; j++)
    			{
    				if (i == j)
    				{
    					mat[i][j] = 1;
    				}
    				else
    				{
    					mat[i][j] = 0;
    				}
    			}
    		}
    		max = array[0][1];
    		for (i = 0; i < n; i++)
    		{
    			for (j = 0; j < n; j++)
    			{
    				if (i == j)
    				{
    					continue;
    				}
    				else
    				{
    					if (fabs(array[i][j]) >= fabs(max))
    					{
    						max = array[i][j];
    						p = i;
    						q = j;
    					}
    					else
    					{
    						continue;
    					}
    				}
    			}
    		}
    		while (fabs(max) > thresh)
    		{
    			if (fabs(max) < thresh)
    			{
    				break;
    			}
    			tan_angle = -2 * array[p][q] / (array[q][q] - array[p][p]);
    			sin_angle = sin(0.5*atan(tan_angle));
    			cos_angle = cos(0.5*atan(tan_angle));
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    
    					if (i == j)
    					{
    						mat[i][j] = 1;
    					}
    					else
    					{
    						mat[i][j] = 0;
    					}
    				}
    			}
    			mat[p][p] = cos_angle;
    			mat[q][q] = cos_angle;
    			mat[q][p] = sin_angle;
    			mat[p][q] = -sin_angle;
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    					rot[i][j] = array[i][j];
    				}
    			}
    			for (j = 0; j < n; j++)
    			{
    				rot[p][j] = cos_angle*array[p][j] + sin_angle*array[q][j];
    				rot[q][j] = -sin_angle*array[p][j] + cos_angle*array[q][j];
    				rot[j][p] = cos_angle*array[j][p] + sin_angle*array[j][q];
    				rot[j][q] = -sin_angle*array[j][p] + cos_angle*array[j][q];
    			}
    			rot[p][p] = array[p][p] * cos_angle*cos_angle +
    				array[q][q] * sin_angle*sin_angle +
    				2 * array[p][q] * cos_angle*sin_angle;
    			rot[q][q] = array[q][q] * cos_angle*cos_angle +
    				array[p][p] * sin_angle*sin_angle -
    				2 * array[p][q] * cos_angle*sin_angle;
    			rot[p][q] = 0.5*(array[q][q] - array[p][p]) * 2 * sin_angle*cos_angle +
    				array[p][q] * (2 * cos_angle*cos_angle - 1);
    			rot[q][p] = 0.5*(array[q][q] - array[p][p]) * 2 * sin_angle*cos_angle +
    				array[p][q] * (2 * cos_angle*cos_angle - 1);
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    					array[i][j] = rot[i][j];
    				}
    			}
    			max = array[0][1];
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    					if (i == j)
    					{
    						continue;
    					}
    					else
    					{
    						if (fabs(array[i][j]) >= fabs(max))
    						{
    							max = array[i][j];
    							p = i;
    							q = j;
    						}
    						else
    						{
    							continue;
    						}
    					}
    				}
    			}
    			for (i = 0; i < n; i++)
    			{
    				eig[i] = array[i][i];
    			}
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    					sum = 0;
    					for (k = 0; k < n; k++)
    					{
    						sum = sum + result[i][k] * mat[k][j];
    					}
    					result_temp[i][j] = sum;
    				}
    			}
    			for (i = 0; i < n; i++)
    			{
    				for (j = 0; j < n; j++)
    				{
    					result[i][j] = result_temp[i][j];
    				}
    			}
    		}
    		for (i = 0; i < n; i++)
    		{
    			for (j = 0; j < n; j++)
    			{
    				array[i][j] = temp_mat[i][j];
    			}
    		}
    		Matrix_Free(result_temp, n, n);
    		Matrix_Free(rot, n, n);
    		Matrix_Free(mat, n, n);
    		Matrix_Free(temp_mat, n, n);
    		return result;
    	}
    }
    int Matrix_Free(float **tmp, int m, int n)
    {
    	int i, j;
    	if (tmp == NULL)
    	{
    		return(1);
    	}
    	for (i = 0; i < m; i++)
    	{
    		if (tmp[i] != NULL)
    		{
    			free(tmp[i]);
    			tmp[i] = NULL;
    		}
    	}
    	if (tmp != NULL)
    	{
    		free(tmp);
    		tmp = NULL;
    	}
    	return(0);
    }
    

    三 结果

    在这里插入图片描述

    更多相关内容
  • 2阶实对称矩阵特征值和特征向量的简单求解方法。因为2阶实对称矩阵的特殊性,可以直接使用初中的2阶方程 x = -b±sqrt(b*b -4*a*c) / 2*a进行求解。这方法在求解平面点的hessian矩阵很有用处。
  • 【内容介绍】利用Rayleigh 商迭代法计算对称矩阵特征值
  • AHBEIGS:将为标准特征值问题 A*x = lambda*x 或广义特征值问题 A*x = lambda*B*x 找到一些特征值和特征向量。 [V,D,FLAG] = AHBEIGS(A,OPTIONS) [V,D,FLAG] = AHBEIGS(A,B,OPTIONS) [V,D,FLAG] = AHBEIGS('Afunc...
  • 针对较高维矩阵的特征值求解问题,定义实对称矩阵的两个特征值函数,分别用来求解实对称矩阵的前p 最大特征值和最小特征值的和;讨论了这两个特征值函数的性质,列举这两函数在现代控制理论等领域中的应用;最后给...
  • 基于MPI的估计对称矩阵特征值的串行和并行程序优化。用于课程报告参考和期末复习以及对MPI并行程序优化进行进一步学习。
  • 矩阵的特征值与特征向量的计算的matlab实现,幂法、反幂法和位移反幂法、雅可比(Jacobi)方法、豪斯霍尔德(Householder)方法、实对称矩阵的三对角化、QR方法、求根位移QR方法计算实对称矩阵特征值、广义特征值问题...
  • 采用雅克比矩阵进行对称矩阵特征值和特征向量计算
  • 人工智能-求对称矩阵特征值的神经网络方法.pdf
  • 它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不是罕见的。在机器学习和许多应用...
    0d9604d088ab34086ca7f4dee1af5856.png

    在线性代数中,有一些特殊的矩阵具有易于分析和操作的特性。它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。

    dcf77eb3d17da782a186e5826e8bf32c.png

    操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不是罕见的。在机器学习和许多应用程序中,我们经常需要处理它们。

    对角矩阵

    对角矩阵S使所有非对角元素等于零。

    5f647358f521b84bd0a11a0bdfccc462.png

    许多分解方法都有一个分解后的矩阵是对角矩阵。由于矩阵只包含对角元素,我们有时用向量来表示它。

    4e4199977d117bccfad77b5618cbd74c.png

    一般矩阵的逆不容易计算。但是求对角矩阵的逆很简单。我们可以用1/m替换对角线元素。

    367c26f5f5449fdf609f135f2de67685.png

    如果其中一个矩阵是对角的,矩阵乘法就简单多了。但是当任何对角元素等于0或者对角矩阵不是方形的时候,它的逆就不存在。但是,在一些方法中,伪逆矩阵(keep the inverse of 0 as 0)可以用作替代。

    正交矩阵

    正交矩阵Q是满足下列要求的方形矩阵

    6163964e1ee6d55490e26b17744e2ad7.png

    Q中的所有列(v 1 ,...,v 6 ,...)都是正交的,即对于i≠j,vᵢᵀvⱼ= 0,vᵢ都是单位向量。

    f7b2ca7a4e89312a64731e720b5a90aa.png

    这听起来像是一个严格的要求但是对于一些矩阵,比如对称矩阵,我们可以选择特征向量在分解过程中是正交的。

    以下矩阵是正交的。

    8cf0764cddf672131e9b296017fb93d5.png

    像对角矩阵一样,它的逆也很容易计算 - 正交矩阵的逆是它的转置。这是正交矩阵非常方便的一个关键原因。

    ddf28523c19a0401dff1e1071a89c966.png

    证明:

    b504edbab63997099dec2221e6bd5426.png

    如果我们用正交矩阵乘以x, x中的误差不会被放大。这种行为对于保持数值稳定性是非常理想的。

    cdc7e41d6eb0b18b3be238a0a4820bb1.png

    对称矩阵

    如果矩阵的转置等于自身,则矩阵是对称的。

    82b8428af45dc2d4364a8a3099adb3e4.png

    例如,

    fceb59566d70a85381de29e8f708c32a.png

    对称矩阵是线性代数和机器学习中最重要的矩阵之一。在机器学习(ML),我们经常使用矩阵保存f(vᵢ , vⱼ)。这些函数通常是对称的,f(x, y) = f(y, x),因此对应的矩阵是对称的。例如在机器学习中,f可以测量数据点之间的特征距离,或者计算特征的协方差。

    2f8bc874314c6dac199b659f2776785d.png

    对称矩阵属性

    对称矩阵S是n×n方形矩阵。

    • 它的逆也是对称的。
    • S的所有特征值都是实数(不是复数)。
    • 即使重复的特征值,我们也可以选择S的 n个本征向量为正交。
    • 可以通过将矩阵A与其转置 - AᵀA或AAᵀ(通常AᵀA ≠ AAᵀ)相乘来形成对称矩阵。在机器学习中,以零为中心的协方差矩阵就是这种形式。
    f969f570590d1a9514550c6fe9c19482.png
    • 如果 A的列是线性无关的,则 AᵀA是可逆的。
    • 每个对称矩阵小号可以进行对角化(因式分解)与Q由正交的特征向量形成vᵢ的小号和Λ是对角矩阵保持所有的特征值。
    • 每个对称矩阵S可以被对角化(分解),其中Q由S的正交特征向量vi形成,Λ是对角矩阵的所有特征值。
    dfe35e7851e020f8a69ec95ded31aea2.png

    上面的等式可以改写为

    82e00a43f569cc0931da3f9b99d38ea1.png

    其中v是单位向量。因此,特征值项λᵢ主导了上述每个项的重要性。事实上,如果它太小,我们可以完全放弃相应的项λᵢvᵢvᵢᵀ。

    该分解特性和“ S具有n个正交特征向量”是对称矩阵的两个重要特性。

    正交特征向量

    特征向量不是唯一的。但通常,我们可以“选择”一组特征向量来满足某些特定条件。如前所述,对称矩阵的特征向量可以选择为正交。如果S是对称矩阵,则其特征值λ和μ满足以下条件。

    5229cad91c85ab1f9791cbca22b1fcb2.png

    证明

    ce6ed035858c6549d6e39ed8ac44e6c0.png

    从这种情况来看,如果λ和μ具有不同的值,则等效性迫使内积为零。因此,x和y是正交的,并且很容易将它们归一化为具有单位长度 - 正交。这证明了如果它们的相应特征值不同,我们可以选择S的特征向量是正交的。即使有重复的特征值,对于对称矩阵仍然如此。

    证明 - 第2部分(可选)

    对于n×n对称矩阵,我们总能找到n个独立的正交特征向量。最大的特征值是

    a658c805fbca355ce640bb494776ee7a.png

    为了求最大值,我们令r(x)的导数为0。经过一些处理,得到

    044dc80927f381626d1ad64f5d8919aa.png

    即,当x是特征向量且特征值最大时,r(x)的比值最大。通过归纳,我们可以推导出我们可以用正交于前一个的特征向量找到下一个最高的特征值。这只是证明的高级描述。

    谱定理(Spectral theorem)

    让我们总结一下。每个n×n对称矩阵S具有n个实特征值λᵢ,其中有n个正交特征向量vᵢ。

    350f22f7a4703499f04b881745b244e9.png

    这些特征值可以形成对角矩阵Λ as diag(λ)。我们还可以将特征向量vᵢ连接到V,即,

    aa602a23d309c4d34fbc1e8e38588fa5.png

    我们将V重命名为Q.因为Q是正交的,所以它是可逆的并且Qᵀ= Q-1。因此,对称矩阵S可以分解为

    d97a940bfc9abbaea0e0387164487409.png

    这是谱定理。因为找到转置比逆转更容易,所以在线性代数中非常需要对称矩阵。

    正定矩阵

    正定矩阵具有所有正特征值。它是对称的。这听起来很不寻常,但现实生活中的许多矩阵都是肯定的。下面的术语计算具有状态x的系统的能量(energy)。如果S是正定的,它保证能量保持为正,除非x为零。

    86269e748ce04f6fe588a79eea31a5ad.png

    在许多应用中,我们假设能量是正的,因此,相应的S应该是正定的。

    测试正定性有许多等效条件。如果以下任何测试为真,则对称矩阵S为正定的:

    1.所有特征值> 0,

    a8c24597d645b78ac72e0e797b085b8e.png

    2.所有左上角的行列式> 0,

    2bd89fce08870d146eec019fb6f1d2b6.png

    3.所有pivots > 0,

    517190544fb4712b8f382ac9fcef6a80.png

    4.能量(energy)> 0,除了x = 0,

    ba059862f92eaf6808e0b859fcaf4f68.png

    5. S可以由一个列向量无关的矩阵a构成。

    7ed53bb51e20db5f0ee59fb9e0bd55f6.png

    验证所有特征值是正的需要很多工作。因此,条件2或3是更常见的测试。例如,正pivots 意味着正特征值(反之亦然)。另一方面,如果我们通过上述测试之一证明矩阵是正定的,我们保证它拥有上述所有属性。

    证明

    在本节中,我们将证明上面的一些属性。如果S是正定的,则​​所有λ都是正的。因此,相应状态x的计算能量为正(x = 0除外)。

    87eeec281753003b24b5fbd2a297b4d1.png

    如果S由AᵀA组成,则S在能量测试下为正。

    52169a5ff0709557de99bf0b6be9596d.png

    除了正定,我们还有半正定,负定和半负定。半正定用“≥”替换上面的所有“>”条件(例如,它的特征值是大于或等于0 ),负定和半负定与正定和半正定相反。

    Minimum

    在微积分中,我们将f的一阶导数设置为零以找到其临界点。然而,这样的点可以是最大值,最小值或鞍点。许多机器学习模型以二次形式xAᵀx表示其成本函数。知道这个函数是否是凸函数是很重要的。因为如果它是凸的,我们知道局部最小值也是全局最小值。如果A是正定的,则​​二次函数是凸的。

    ebf77d8396bc423bc1ce1392dd5fed44.png

    对于任何函数f,我们计算下面的Hessian矩阵。如果A是正定的,则​​相应的点是局部最小值。

    c4bed63343dc4ce911ecf43098dfb776.png

    协方差矩阵

    在机器学习中,我们非常有兴趣找到特征之间的相关性。下图显示了重量和高度之间的正相关关系。

    d162be2e4162df5be03234bee5c64daf.png

    在机器学习中,我们用协方差矩阵Σ建模关系。

    ff9c05f67d3f1bcb6f5d012df590a062.gif

    协方差矩阵是半正定的。

    展开全文
  • 以下就从实对称矩阵的角度出发,利用特征值的极小极大原理,从普通特征值问题Ax=λxAx=\lambda xAx=λx衍生到广义特征值问题Ax=λBxAx=\lambda BxAx=λBx逐步讨论其特征值的性质。 【广义特征值问题】设A=(aij)∈Rn...

    前言

    在许多实际问题中,所产生的矩阵往往都是对称矩阵,比如我们耳熟能详的实对称矩阵也是重要的研究对象。以下就从实对称矩阵的角度出发,利用特征值的极小极大原理,从普通特征值问题 A x = λ x Ax=\lambda x Ax=λx衍生到广义特征值问题 A x = λ B x Ax=\lambda Bx Ax=λBx逐步讨论其特征值的性质。

    【广义特征值问题】设 A = ( a i j ) ∈ R n × n A=(a_{ij})\in \mathbb{R}^{n\times n} A=(aij)Rn×n n n n实对称矩阵, B = ( b i j ) ∈ R n × n B=(b_{ij})\in \mathbb{R}^{n\times n} B=(bij)Rn×n n n n实对称正定矩阵,使下式 A x = λ B x \mathbf{Ax=\lambda Bx} Ax=λBx 有非零解向量 x ∈ R n x\in \mathbb{R}^{n} xRn,则称 λ \lambda λ是矩阵 A A A相对于矩阵 B B B的特征值,且 x x x是属于 λ \lambda λ的特征向量。该问题常见于振动理论。

    我们可以发现

    • B ≠ I B\not=I B=I时,该问题是广义特征值问题
    • B = I B=I B=I时,该问题是普通特征值问题

    思路:如何利用极小极大原理求第 k k k个特征值及奇异值?

    利用极大极小原理,我们先确定 n n n阶实对称阵的最大最小特征值,然后逐步求第2大和第2小特征值进而归纳到求第 k k k大和第 k k k小特征值。

    本文就对称矩阵特征值的极性与直积做以梳理,完整定理证明请参考西工大的《矩阵论》[1]。

    一、实对称矩阵的瑞利商与广义瑞利商性质

    我们在讨论实对称矩阵的特征值时,往往会通过实对称阵的瑞利商来研究,因为瑞利商是由如下特征值问题推导出来的,它可以直接求出矩阵的特征值。
    A x = λ x ⇒ x T A x = λ x T x ⇒ λ = x T A x x T x = R ( x ) Ax=\lambda x \Rightarrow x^TAx=\lambda x^Tx \Rightarrow \lambda=\frac{x^TAx}{x^Tx}=R(x) Ax=λxxTAx=λxTxλ=xTxxTAx=R(x)

    【瑞利商定义】设 A = ( a i j ) ∈ R n × n A=(a_{ij})\in \mathbb{R}^{n\times n} A=(aij)Rn×n n n n实对称矩阵, x ∈ R n x\in \mathbb{R}^{n} xRn,则称下式为矩阵 A A A的瑞利商( Rayleigh \text{Rayleigh} Rayleigh商) R ( x ) = x T A x x T x ( x ≠ 0 ) \mathbf{R(x) = \frac{x^TAx}{x^Tx}} \quad (x\not=\mathbf{0}) R(x)=xTxxTAx(x=0)

    【广义瑞利商定义】设 A = ( a i j ) ∈ R n × n , B = ( b i j ) ∈ R n × n A=(a_{ij})\in \mathbb{R}^{n\times n},B=(b_{ij})\in \mathbb{R}^{n\times n} A=(aij)Rn×n,B=(bij)Rn×n均是 n n n实对称矩阵,且 B B B正定 x ∈ R n x\in \mathbb{R}^{n} xRn,则称下式为矩阵 A A A相对于矩阵 B B B广义瑞利商 R ( x ) = x T A x x T B x ( x ≠ 0 ) \mathbf{R(x) = \frac{x^TAx}{x^TBx}} \quad (x\not=\mathbf{0}) R(x)=xTBxxTAx(x=0)

    • 【性质1】: R ( x ) R(x) R(x) x x x连续函数
    • 【性质2】: R ( x ) R(x) R(x) x x x的零次齐次函数(齐次性 R ( k x ) = R ( x ) R(kx)=R(x) R(kx)=R(x)
      事实上,对于任意实数 λ ≠ 0 \lambda \not=0 λ=0有下式分别满足齐次性和零次
      R ( λ x ) = R ( x ) = λ 0 R ( x ) R(\lambda x)=R(x)=\lambda^0 R(x) R(λx)=R(x)=λ0R(x)
    • 【性质3】:当 x x x是由 x 0 ≠ 0 x_0\not=0 x0=0张成的空间时, R ( x ) R(x) R(x)是一常数
    • 【性质4】: R ( x ) R(x) R(x)最大最小值存在,且能够在单位球面 S = { x ∣ x ∈ R n , ∥ x ∥ 2 = 1 } S=\{x|x\in \mathbb{R}^n,\|x\|_2=1\} S={xxRn,x2=1}上达到
    • 【性质5】:非零向量 x 0 x_0 x0 R ( x ) R(x) R(x)驻点 ⇔ x 0 \Leftrightarrow x_0 x0 A x = λ B x Ax=\lambda Bx Ax=λBx特征向量,当 B = I B=I B=I时对应于瑞利商问题同理,通过矩阵求导可得

    一般情况下,我们令实对称矩阵 A A A的特征值按从小到大顺序排列如下
    λ 1 ≤ λ 2 ≤ . . . ≤ λ n \lambda_1 \le \lambda_2 \le... \le \lambda_n λ1λ2...λn
    对应标准正交特征向量系为 p 1 , p 2 , . . . , p n p_1,p_2,...,p_n p1,p2,...,pn

    【定理】设 A = ( a i j ) ∈ R n × n A=(a_{ij})\in \mathbb{R}^{n\times n} A=(aij)Rn×n n n n实对称矩阵,则有 min ⁡ x ≠ 0 R ( x ) = λ 1 , max ⁡ x ≠ 0 R ( x ) = λ n , λ 1 ≤ R ( x ) ≤ λ n \mathbf{\min_{x\not=\mathbf{0}} R(x) = \lambda_1,\quad \max_{x\not=\mathbf{0}} R(x) = \lambda_n ,\quad \lambda_1 \le R(x) \le \lambda_n} x=0minR(x)=λ1,x=0maxR(x)=λn,λ1R(x)λn

    【证明】任取 0 ≠ x ∈ R n \mathbf{0}\not=x \in \mathbb{R}^n 0=xRn,则有
    x = c 1 p 1 + c 2 p 2 + . . . + c n p n ( c 1 2 + c 2 2 + . . . + c n 2 ≠ 0 ) x=c_1p_1+c_2p_2+...+c_np_n \quad (c_1^2+c_2^2+...+c_n^2\not=0) x=c1p1+c2p2+...+cnpn(c12+c22+...+cn2=0)
    由于 p 1 , p 2 , . . . , p n p_1,p_2,...,p_n p1,p2,...,pn是正交特征向量系,所以有 x i = c i p i x_i=c_ip_i xi=cipi
    于是有
    A x = λ x = λ 1 c 1 p 1 + λ 2 c 2 p 2 + . . . + λ n c n p n x T A x = c 1 2 λ 1 + c 2 2 λ 2 + . . . + c n 2 λ n x T x = c 1 2 + c 2 2 + . . . + c n 2 \begin{aligned} Ax&=\lambda x=\lambda_1c_1p_1+\lambda_2c_2p_2+...+\lambda_nc_np_n\\ x^TAx & =c_1^2\lambda_1+c_2^2\lambda_2+...+c_n^2\lambda_n \\ x^Tx & =c_1^2+c_2^2+...+c_n^2 \\ \end{aligned} AxxTAxxTx=λx=λ1c1p1+λ2c2p2+...+λncnpn=c12λ1+c22λ2+...+cn2λn=c12+c22+...+cn2
    k i = c i 2 c 1 2 + c 2 2 + . . . + c n 2 k_i=\frac{c_i^2}{c_1^2+c_2^2+...+c_n^2} ki=c12+c22+...+cn2ci2,其中 k 1 + k 2 + . . . + k n = 1 k_1+k_2+...+k_n=1 k1+k2+...+kn=1,则有
    R ( x ) = x T A x x T x = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n R(x) =\frac{x^TAx}{x^Tx}=k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n R(x)=xTxxTAx=k1λ1+k2λ2+...+knλn
    简单起见,假设 A A A 2 2 2阶实对称阵,即仅有两个特征值 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2满足 R ( x ) = k 1 λ 1 + k 2 λ 2    ( k 1 + k 2 = 1 ) R(x)=k_1\lambda_1+k_2 \lambda_2\;(k_1+k_2=1) R(x)=k1λ1+k2λ2(k1+k2=1),则如下图所示

    从上图,我们可以清晰的看出 R ( x ) R(x) R(x) x x x连续函数,该集合也被称为凸包,由此可得
    λ 1 ≤ R ( x ) ≤ λ n \lambda_1 \le R(x) \le \lambda_n λ1R(x)λn
    可以通过如下式子验证 R ( p 1 ) = λ 1 R(p_1)=\lambda_1 R(p1)=λ1
    R ( p i ) = p i T A p i p i T p i = λ i R(p_i) =\frac{p_i^TAp_i}{p_i^Tp_i}=\lambda_i R(pi)=piTpipiTApi=λi
    有了 p k p_k pk x k x_k xk,我们可以直接求得第 k k k小特征值 λ k \lambda_k λk。但问题来了,如果我们不知道 p k p_k pk或者不想依赖于 x k x_k xk,我们如何求得第 k k k小特征值 λ k \lambda_k λk呢?这就需要下面一章的极小极大原理了。

    【重要推论】若 λ 1 = . . . = λ k ( 1 ≤ k ≤ n ) \lambda_1=...=\lambda_k(1\le k \le n) λ1=...=λk(1kn),则在 ∥ x ∥ 2 = 1 \|x\|_2=1 x2=1上, R ( x ) R(x) R(x)的所有极小点为 l 1 p 1 + l 2 p 2 + . . . + l k p k \mathbf{l_1p_1+l_2p_2+...+l_kp_k} l1p1+l2p2+...+lkpk 其中, l i ∈ R ( i = 1 , . . . , k ) l_i\in R(i=1,...,k) liR(i=1,...,k),且满足 l 1 2 + l 1 2 + . . + l k 2 = 1 l_1^2+l_1^2+..+l_k^2=1 l12+l12+..+lk2=1.

    二、普通与广义特征值的极小极大原理

    由上章,我们得到几个工具,令 V n = span { x 1 , x 2 , . . . , x n }    ( λ 1 ≤ λ 2 ≤ . . . ≤ λ n ) V_n=\text{span}\{x_1,x_2,...,x_n\}\;(\lambda_1 \le \lambda_2 \le... \le \lambda_n ) Vn=span{x1,x2,...,xn}(λ1λ2...λn)则有
    R ( x ) = x T A x x T x = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n R(x) =\frac{x^TAx}{x^Tx}=k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n R(x)=xTxxTAx=k1λ1+k2λ2+...+knλn
    λ 1 ≤ R ( x ) ≤ λ n ⇒ { min ⁡ x ≠ 0 , x ∈ V n R ( x ) = λ 1 max ⁡ x ≠ 0 , x ∈ V n R ( x ) = λ n \lambda_1 \le R(x) \le \lambda_n \Rightarrow \begin{cases} \min_{x\not=\mathbf{0},x\in V_n} R(x) = \lambda_1 \\ \max_{x\not=\mathbf{0},x\in V_n} R(x) = \lambda_n \\ \end{cases} λ1R(x)λn{minx=0,xVnR(x)=λ1maxx=0,xVnR(x)=λn
    当我们想求 λ 2 , λ n − 1 \lambda_2,\lambda_{n-1} λ2,λn1时,可以通过缩小张成的子空间得到
    λ 2 = min ⁡ x ≠ 0    R ( x ) = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n s . t .      k 1 = 0 ⋮ λ i = min ⁡ x ≠ 0    R ( x ) = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n s . t .      k 1 = k 2 = . . . = k i − 1 = 0 \begin{aligned} \lambda_{2}= \min_{x\not=0} & \; R(x) =k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n\\ s.t. & \;\; k_{1}=0 \\ \end{aligned} \\ \vdots \\ \begin{aligned} \lambda_{i}= \min_{x\not=0} & \; R(x) =k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n\\ s.t. & \;\; k_1=k_2=...=k_{i-1}=0 \\ \end{aligned} \\ λ2=x=0mins.t.R(x)=k1λ1+k2λ2+...+knλnk1=0λi=x=0mins.t.R(x)=k1λ1+k2λ2+...+knλnk1=k2=...=ki1=0
    同理得
    λ n − 1 = max ⁡ x ≠ 0    R ( x ) = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n s . t .      k n = 0 ⋮ λ n − i − 1 = min ⁡ x ≠ 0    R ( x ) = k 1 λ 1 + k 2 λ 2 + . . . + k n λ n s . t .      k n = k n − 1 = . . . = k n − i = 0 \begin{aligned} \lambda_{n-1}= \max_{x\not=0} & \; R(x) =k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n\\ s.t. & \;\; k_{n}=0 \\ \end{aligned} \\ \vdots \\ \begin{aligned} \lambda_{n-i-1}= \min_{x\not=0} & \; R(x) =k_1\lambda_1+k_2\lambda_2+...+k_n\lambda_n\\ s.t. & \;\; k_n=k_{n-1}=...=k_{n-i}=0 \\ \end{aligned} \\ λn1=x=0maxs.t.R(x)=k1λ1+k2λ2+...+knλnkn=0λni1=x=0mins.t.R(x)=k1λ1+k2λ2+...+knλnkn=kn1=...=kni=0
    因此,我们可以归纳出如下定理

    【定理】设 x ∈ L ( p r , p r + 1 , . . . , p s ) , 1 ≤ r ≤ s ≤ n x\in L(p_r,p_{r+1},...,p_s),1 \le r \le s \le n xL(pr,pr+1,...,ps),1rsn,则有 min ⁡ x ≠ 0    R ( x ) = λ r max ⁡ x ≠ 0    R ( x ) = λ s \mathbf{\min_{x\not=0} \; R(x) =\lambda_r \quad \max_{x\not=0} \; R(x) =\lambda_s} x=0minR(x)=λrx=0maxR(x)=λs

    2.1 引出问题:由于 V k V_k Vk不唯一导致得到多个特征值

    但以上定理在 p r , p s p_r,p_{s} pr,ps未知下无法使用,因此我们不再指定让某个系数 k i = 0 k_i=0 ki=0,而是选取 k k k维子空间 V k V_k Vk来求,由于 V k V_k Vk是不唯一的,因此可能会得到多个特征值,例如我们想要得到 λ 2 \lambda_2 λ2,则选取 V n − 1 V_{n-1} Vn1,有如下两种情况

    min ⁡ x ≠ 0    R ( x ) = { λ 1        if      x 1 ∈ V n − 1 λ 2        if      x 1 ∉ V n − 1 \min_{x\not=0}\; R(x)= \begin{cases} \lambda_{1} \quad \;\;\; \text{if} \;\; x_1 \in V_{n-1} \\ \lambda_{2} \quad \;\;\; \text{if} \;\; x_1 \notin V_{n-1} \\ \end{cases} x=0minR(x)={λ1ifx1Vn1λ2ifx1/Vn1
    max ⁡ x ≠ 0    R ( x ) = { λ n        if      x n ∈ V n − 1 λ n − 1 if      x n ∉ V n − 1 \max_{x\not=0}\; R(x)= \begin{cases} \lambda_{n} \quad \;\;\; \text{if} \;\; x_n \in V_{n-1} \\ \lambda_{n-1} \quad \text{if} \;\; x_n \notin V_{n-1} \\ \end{cases} x=0maxR(x)={λnifxnVn1λn1ifxn/Vn1

    2.2 解决问题:使用极大极小原理固定特征向量

    对于上述子空间 V k V_k Vk不唯一情况,得到
    min ⁡ 0 ≠ x ∈ V n − 1 R ( x ) ≤ λ 2 max ⁡ 0 ≠ x ∈ V n − 1   R ( x ) ≥ λ n − 1 \min_{0\not =x\in V_{n-1}} R(x)\le \lambda_{2} \quad \max_{0\not =x\in V_{n-1}}\ R(x)\ge \lambda_{n-1} 0=xVn1minR(x)λ20=xVn1max R(x)λn1
    为解决此问题,我们使用极小极大原理得到
    λ 2 = max ⁡ V n − 1 [ min ⁡ 0 ≠ x ∈ V n − 1 R ( x ) ] ,      λ n − 1 = min ⁡ V n − 1 [ max ⁡ 0 ≠ x ∈ V n − 1 R ( x ) ] \lambda_{2} = \max_{V_{n-1}} \left[ \min_{0\not =x\in V_{n-1}} R(x) \right] ,\; \; \lambda_{n-1} = \min_{V_{n-1}} \left[ \max_{0\not =x\in V_{n-1}} R(x) \right] λ2=Vn1max[0=xVn1minR(x)],λn1=Vn1min[0=xVn1maxR(x)]
    为此,我们归纳出一般的式子,我们

    【定理】设 V k V_k Vk R n \mathbb{R}^n Rn中的任意一个 k k k维子空间,则普通特征值问题与广义特征值问题从小到大的第 k k k个特征值和 n − ( k − 1 ) n-(k-1) n(k1)个特征值具有如下极小极大性质
    λ n − ( k − 1 ) = max ⁡ V k [ min ⁡ 0 ≠ x ∈ V k R ( x ) ] ,      λ k = min ⁡ V k [ max ⁡ 0 ≠ x ∈ V k R ( x ) ] \mathbf{\lambda_{n-(k-1)} = \max_{V_{k}} \left[ \min_{0\not =x\in V_{k}} R(x) \right] ,\; \; \lambda_{k} = \min_{V_{k}} \left[ \max_{0\not =x\in V_{k}} R(x) \right] } λn(k1)=Vkmax[0=xVkminR(x)],λk=Vkmin[0=xVkmaxR(x)]

    • 左式被称为特征值的极大极小原理
    • 右式被称为特征值的极小极大原理

    三、矩阵奇异值的极小极大性质

    我们通过矩阵瑞利商的极小极大原理,可以衍生到解决奇异值问题,我们将矩阵 A ∈ R r m × n A\in \mathbb{R}_r^{m\times n} ARrm×n的奇异值排列如下 [其中, σ i = λ i ( A T A ) \sigma _i = \sqrt{\lambda_i (A^TA)} σi=λi(ATA) ]
    0 = σ 1 = σ 2 = . . . = σ n − r ≤ σ n − r + 1 ≤ . . . ≤ σ n 0=\sigma _1 =\sigma _2 =... =\sigma _{n-r} \le \sigma _{n-r+1} \le ... \le \sigma _{n} 0=σ1=σ2=...=σnrσnr+1...σn

    我们令 B = A T A B=A^TA B=ATA,则实对称矩阵 B B B的瑞利商如下
    R ( x ) = x T B x x T x = x T ( A T A ) x x T x = ( A x ) T A x x T x = ∥ A x ∥ 2 2 ∥ x ∥ 2 2 = λ = σ R(x) =\frac{x^TBx}{x^Tx} =\frac{x^T(A^TA)x}{x^Tx}=\frac{(Ax)^TAx}{x^Tx}=\frac{\|Ax\|_2^2}{\|x\|_2^2}=\lambda=\sqrt{\sigma} R(x)=xTxxTBx=xTxxT(ATA)x=xTx(Ax)TAx=x22Ax22=λ=σ
    则矩阵 A A A的第 k k k个奇异值和第 n − k + 1 n-k+1 nk+1个奇异值具有如下极小极大性质
    σ n − ( k − 1 ) = max ⁡ V k [ min ⁡ 0 ≠ x ∈ V k ∥ A x ∥ 2 ∥ x ∥ 2 ] ,      σ k = min ⁡ V k [ max ⁡ 0 ≠ x ∈ V k ∥ A x ∥ 2 ∥ x ∥ 2 ] \sigma _{n-(k-1)} = \max_{V_{k}} \left[ \min_{0\not =x\in V_{k}}\frac{\|Ax\|_2}{\|x\|_2} \right] ,\; \; \sigma _{k} = \min_{V_{k}} \left[ \max_{0\not =x\in V_{k}}\frac{\|Ax\|_2}{\|x\|_2} \right] σn(k1)=Vkmax[0=xVkminx2Ax2],σk=Vkmin[0=xVkmaxx2Ax2]
    其中, V k V_k Vk R n \mathbb{R}^n Rn中的任意一个 k k k维子空间。

    附录:矩阵直积( Kronecker \text{Kronecker} Kronecker积)的概念

    运用矩阵的直积运算,能够将线性矩阵方程转换为线性代数方程组进行求解

    【定义】设 A = ( a i j ) ∈ C m × n , B = ( b i j ) ∈ C p × q A=(a_{ij})\in \mathbb{C}^{m\times n},B=(b_{ij})\in \mathbb{C}^{p\times q} A=(aij)Cm×n,B=(bij)Cp×q,则称如下分块矩阵为 A A A B B B的直积( Kronecker \text{Kronecker} Kronecker积)

    参考文献

    程云鹏, 凯院, 仲. 矩阵论[M]. 西北工业大学出版社, 2006.

    展开全文
  • 2.矩阵A的所有特征值的积等于A的行列式。3.关于A的矩阵多项式f(A)的特征值为f(μ)。4.若A可逆,则A−1的特征值为1/μ。5.若A与B相似,则A与B有相同特征多项式,即A与B特征值相同。6.属于A的不同特征值的特征向量线性...

    设A、B为n阶方阵,μ为A的特征值。

    相关结论

    1.矩阵A的所有特征值的和等于A的迹(A的主对角线元素之和)。

    2.矩阵A的所有特征值的积等于A的行列式。

    3.关于A的矩阵多项式f(A)的特征值为f(μ)。

    4.若A可逆,则A−1的特征值为1/μ。

    5.若A与B相似,则A与B有相同特征多项式,即A与B特征值相同。

    6.属于A的不同特征值的特征向量线性无关。

    7.(哈密尔顿定理)若φ(μ)为A的特征多项式,则φ(A)=0。

    8.A能对角化的充分必要条件是A有n个线性无关的特征向量。

    9.若A的n个特征值互不相同,则A可对角化。

    10.若A的k重特征值μ有k个线性无关的特征向量,则A可对角化。

    11.若A有k重特征值μ,齐次方程(A−μE)X=0解空间维数为k,则A可对角化。

    12.若A有k重特征值,矩阵A−μE的秩为n−k,则A可对角化。

    13.若A是对称矩阵,则属于A的不同特征值的特征向量正交。

    14.若A是对称矩阵,则A必可对角化。

    矩阵A对角化的步骤

    1.求可逆矩阵P,使得

    P^−1AP=diag(μ12,⋯,μn)

    ①求A的特征值μ12,⋯,μn

    ②求上述特征值对应的特征向量p1,p2,⋯,pn

    ③写出矩阵P=(p1,p2,⋯,pn)。

    2.若A对称,求正交矩阵Q,使得

    Q^−1AQ=Q^TAQ=diag(μ12,⋯,μn)

    ①求A的特征值μ12,⋯,μn

    ②求上述特征值对应的特征向量p1,p2,⋯,pn

    ③将k重特征值μi的k个特征向量施密特正交化;

    ④将所有n个特征向量单位化;

    ⑤不妨设经过正交化单位化的特征向量依次为q1,q2,⋯,qn,写出正交矩阵Q=(q1,q2,⋯,qn)。

    典型例子

    8632947afd37260651408175744e6487.png
    df60c7cff9397e6c697e75c5420902ab.png
    f4d3a95c93b7071f082e750259fe124a.png
    097bdbd54556897e1daf96b8a1d31b4d.png
    71271a4519a6232c53baaaedf96a10f3.png
    展开全文
  • 本文主要针对线性代数中的正定矩阵、实对称矩阵矩阵特征值分解以及矩阵 SVD 分解进行总结。 如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应...
  • 从机器学习、量子计算、物理到许多数学和工程的问题,都可以通过找到一个矩阵特征值和特征向量来解决。根据定义(标量λ、向量v是特征值、特征向量A):视觉上,Av与特征向量v位于同一直线上。这里有些例子。然而,Ax...
  • 特征值篇1——特征值和特征向量特征值篇1--特征值和特征向量_thompson的博客-CSDN博客​blog.csdn.net特征值篇2——特征子空间特征值篇2--特征子空间_thompson的博客-CSDN博客​blog.csdn.net特征值篇3——矩阵可...
  • 对给定的特征值和对应的特征向量,提出了对称正交对称半正定矩阵特征值问题及最佳逼近问题。通过分析对称正交矩阵对称正交对称半正定矩阵的结构,利用矩阵的奇异值分解,导出了这种逆特征值问题的最小二乘解的...
  • 对称矩阵对称矩阵(Symmetric Matrix)是指元素以主对角线为对称轴对应相等的矩阵,例如: 可以看到,对称矩阵的转置等于其自身,即: 对角矩阵对角矩阵(Diagonal Matrix)是指除主对角线之外其他元素都为0的矩阵,...
  • 基于java语言的对称矩阵特征值求解方法,附带讲解PPT和源代码。
  • 计算许多3x3实对称矩阵特征值。 计算是非迭代的,基于完全矢量化的 matlab 矩阵运算,并且支持 GPU 计算。 它可以快速有效地同时处理多 3×3 矩阵。 此代码特别适合 3D 中的张量/黎曼微积分、体积张量图像的可视...
  • 对称矩阵特征值和特征向量PPT学习教案.pptx
  • 特征多项式求解一矩阵的特征值应该是大家所要掌握的基本功,但是,相信很多同学发现,很多答案的解析,...“抵消法”:考研范围内的矩阵求特征值,普遍是三阶矩阵,针对三阶实对称矩阵,一般是使用“抵消为0”先凑...
  • 对称矩阵特征值和特征向量.ppt
  • 对称矩阵的不同特征值所对应的特征向量正交,而且实对称矩阵特征值全为实数。在考研中,我们一定要重点掌握会求一正交矩阵来相似对角化,这里的正交矩阵是矩阵的彼此正交且为单位向量的特征向量组成的,这里的...
  • 考虑充要条件==, 矩阵A、B相似==A、B特征值相同且A、B均可相似标准化(特征对角阵化)——1 矩阵A、B合同==A、B有相同正负惯性指数——2 矩阵A、B均以正交变换进行相似对角化,即A、B均与各自相似标准型合同==A、B与...
  • 解非对称矩阵特征值的QR算法.pdf
  • 本文研究实对称矩阵特征值的最大值与最小值。定理设 是 阶实对称矩阵,记 分别是 中所有特征值中的最大值与最小值,则 证明:这里只证关于最大值的那部分。最小值的证明是完全类似的。因为 是实对称矩阵,所以 有由 ...
  • eigND.c 实数非对称 N 维矩阵特征值E=eigND(A); 计算 N 维“方”矩阵 A 的特征值。 如果 A 的大小为 [nxnxpxqxrx ...],则 E 是来自 A 的前两维度的每 [nxn] 方阵。 E 是大小 [nx 1 xpxqxrx ...] 请注意,E 的...
  • 若 正交矩阵有几重要性质: A的逆等于A的转置,即 A的行列式为±1,即 A的行(列)向量组为n维单位正交向量组上述3个性质可以看做是正交矩阵的判定准则,我们可以通过上述准则简单地判断一个矩阵是否是正交矩阵。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,197
精华内容 12,478
热门标签
关键字:

对称矩阵的特征值个数