热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在R中得到矩阵的右特征向量?-HowtoobtainrighteigenvectorsofmatrixinR?

Edition:theprobleminmyquestionwasIvetriedtofindmatrixSfromequation8butthisequati

Edition : the problem in my question was I've tried to find matrix S from equation 8 but this equation have error.

版本:我的问题是,我试图从公式8中找到矩阵S,但这个方程有误差。

How to directly obtain right eigenvectors of matrix in R ? 'eigen()' gives only left eigenvectors

如何在R中直接获得矩阵的右特征向量?“特征”只给出左特征向量。

Really last edition, I've made big mess here, but this question is really important for me :

最后一版,我搞砸了,但这个问题对我来说很重要:

eigen() provides some matrix of eigenvectors, from function help :

eigen()提供了一些特征向量的矩阵,从函数帮助:

" If ‘r <- eigen(A)’, and ‘V <- r$vectors; lam <- r$values’, then

“如果r <- eigen(A)”和“V <- r$向量”;林<- r美元价值”

                      A = V Lmbd V^(-1)                         

(up to numerical fuzz), where Lmbd =diag(lam)"

(up to数值fuzz), Lmbd =diag(lam)

that is A V = V Lmbd, where V is matrix now we check it :

这是V = vlmbd, V是矩阵,我们检查一下

set.seed(1)
A<-matrix(rnorm(16),4,4)
Lmbd=diag(eigen(A)$values)
V=eigen(A)$vectors
A%*%V

> A%*%V
                      [,1]                  [,2]          [,3]           [,4]
[1,]  0.0479968+0.5065111i  0.0479968-0.5065111i  0.2000725+0i  0.30290103+0i
[2,] -0.2150354+1.1746298i -0.2150354-1.1746298i -0.4751152+0i -0.76691563+0i
[3,] -0.2536875-0.2877404i -0.2536875+0.2877404i  1.3564475+0i  0.27756026+0i
[4,]  0.9537141-0.0371259i  0.9537141+0.0371259i  0.3245555+0i -0.03050335+0i
> V%*%Lmbd
                      [,1]                  [,2]          [,3]           [,4]
[1,]  0.0479968+0.5065111i  0.0479968-0.5065111i  0.2000725+0i  0.30290103+0i
[2,] -0.2150354+1.1746298i -0.2150354-1.1746298i -0.4751152+0i -0.76691563+0i
[3,] -0.2536875-0.2877404i -0.2536875+0.2877404i  1.3564475+0i  0.27756026+0i
[4,]  0.9537141-0.0371259i  0.9537141+0.0371259i  0.3245555+0i -0.03050335+0i

and I would like to find matrix of right eigenvectors R,
equation which define matrix of left eigenvectors L is :

我想找到右特征向量的矩阵R,定义左特征向量的矩阵L是:

L A  = LambdaM L

equation which define matrix of right eigenvectors R is :

右特征向量R的定义矩阵为:

A R = LambdaM R

and eigen() provides only matrix V:

和eigen()只提供矩阵V:

A V = V Lmbd

I would like to obtain matrix R and LambdaM for real matrix A which may be negative-definite.

我想要得到矩阵R和矩阵A,这可能是负定的。

2 个解决方案

#1


7  

A worked example.

一个工作的例子。

Default (= right eigenvectors):

默认(=右特征向量):

m <- matrix(1:9,nrow=3)
e <- eigen(m)
e1 <- e$vectors
zapsmall((m %*% e1)/e1) ## right e'vec
##          [,1]      [,2] [,3]
## [1,] 16.11684 -1.116844    0
## [2,] 16.11684 -1.116844    0
## [3,] 16.11684 -1.116844    0

Left eigenvectors:

左特征向量:

eL <- eigen(t(m))    
eL1 <- eL$vectors

(We have to go to a little more effort since we need to be multiplying by row vectors on the left; if we extracted just a single eigenvector, R's ignorance of row/column vector distinctions would make it "do the right thing" (i.e. (eL1[,1] %*% m)/eL1[,1] just works).)

(我们需要做更多的努力因为我们需要乘以左边的行向量;如果我们只提取一个特征向量,那么R对行/列向量的区分就会使它“做正确的事情”(即,eL1[,1] %*% m)/eL1[,1]只是工作)。

zapsmall(t(eL1) %*% m/(t(eL1)))
##          [,1]      [,2]      [,3]
## [1,] 16.116844 16.116844 16.116844
## [2,] -1.116844 -1.116844 -1.116844
## [3,]  0.000000  0.000000  0.000000

#2


4  

This should work

这应该工作

Given a matrix A.

给定一个矩阵。

lefteigen  <-  function(A){
  return(t(eigen(t(A))$vectors))
}

Every left eigenvector is the transpose of a right eigenvector of the transpose of a matrix

每一个左特征向量就是矩阵的转置的右特征向量的转置。


推荐阅读
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 使用 Babylon.js 实现地球模型与切片地图交互(第三部分)
    本文继续探讨在上一章节中构建的地球模型基础上,如何通过自定义的 `CameraEarthWheelControl` 类来实现更精细的地图缩放控制。我们将深入解析该类的实现细节,并展示其在实际项目中的应用。 ... [详细]
  • 本文介绍了如何在React应用中实现延迟加载以提高性能,以及如何利用自定义Hook和高阶组件(HOC)来增强组件功能。通过这些技术,开发者可以构建更加高效和可维护的应用。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
author-avatar
mobiledu2502936307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有