| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2019-11-21 
				
				
				
					帖子: 3,013
				 
				
				
				声望力: 66 ![]()  | 
	
	
	
		
		
			
			 
			
			我正在从教科书上处理MatLab问题,其中一个问题要求我在MATLAB中使用eig命令,计算矩阵V和D,使A = V * D * inv(V)。知道V的第一列对应于第一特征值D(1,1)等等,我需要对D的对角线条目进行重新排序,以使实部沿对角线增加,并相应地对V的列进行重新排序,以便A = V * D * inv(V)仍然成立。到目前为止,这是我写的内容:  
		
		
		
		
		
		
		
	r = RandStream('mt19937ar','Seed',1234); A = r.randn(10,10)+1j*r.randn(10,10); [V,D] = eig(A); for tt = 1:9 if (real(D(tt,tt)) > real(D(tt+1,tt+1))) temp = D(tt,tt); D(tt,tt) = D(tt+1,tt+1); D(tt+1,tt+1) = temp; tempV = V(1,tt); V(1,tt) = V(1,tt+1); V(1,tt+1) = tempV; if (A == V*D*inv(V)) break end end end 当我测试它时,D的对角元素与原始顺序没有变化,我知道这可能是由于我设置的条件引起的,但是我不确定是什么原因导致它不执行任何操作。我还认为重新排序对角线元素和相应特征向量的方式可能存在问题。感谢您的任何反馈或建议,谢谢。 更多&回答...  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |