C++使用eigen库做本征分解(eigendecomposition)

C++使用eigen库做本征分解(eigendecomposition)Eigendecomposition的概念可见https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix这里贴一段厄米矩阵的代码,见ht

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Eigendecomposition的概念可见https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix

 

这里贴一段厄米矩阵的代码,见https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html

注意,不同本征值的本征向量是正交的,这是我们可以直接用矩阵共轭来取代矩阵求逆的原因。

 

 1 #include <iostream>
 2 #include <eigen3/Eigen/Dense>
 3 using namespace std;
 4 using namespace Eigen;
 5 
 6 int main ()
 7 {
 8   Matrix2cd A;
 9   A<<complex<double>(1,0), complex<double>(0,1),
10     complex<double>(0,-1), complex<double>(1,0);
11 
12   SelfAdjointEigenSolver<Matrix2cd> solver(A);
13   if (solver.info() != Success)
14     {
15       cerr<<"Eigen solver failed."<<endl;
16       abort ();
17     }
18   Matrix2cd lambda = Matrix2cd::Zero();
19   for (int i = 0; i < lambda.cols(); ++i)
20     lambda(i,i) = solver.eigenvalues()(i);
21   Matrix2cd Q = solver.eigenvectors();
22   cout<<"Matrix A:\n"<<A<<endl<<endl;
23   cout<<"Matrix lambda:\n"<<lambda<<endl<<endl;
24   cout<<"Matrix Q:\n"<<Q<<endl<<endl;
25   cout<<"Q*Q^dagger:\n"<<Q*Q.adjoint()<<endl<<endl;
26   cout<<"Q*lambda*Q^dagger:\n"<<Q*lambda*Q.adjoint()<<endl<<endl;
27 
28   return 0;
29 }

输出结果为

 1 Matrix A:
 2  (1,0)  (0,1)
 3 (0,-1)  (1,0)
 4 
 5 Matrix lambda:
 6 (0,0) (0,0)
 7 (0,0) (2,0)
 8 
 9 Matrix Q:
10  (0.707107,0)  (0.707107,0)
11  (0,0.707107) (0,-0.707107)
12 
13 Q*Q^dagger:
14 (1,0) (0,0)
15 (0,0) (1,0)
16 
17 Q*lambda*Q^dagger:
18  (1,0)  (0,1)
19 (0,-1)  (1,0)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167684.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【C语言】4种方法求最大公约数和最小公倍数及比较它们的运行时间

    【C语言】4种方法求最大公约数和最小公倍数及比较它们的运行时间一、题目要求利用辗转相除法、穷举法、更相减损术、Stein算法求出两个数的最大公约数或者/和最小公倍数。最大公约数:指两个或多个整数共有约数中最大的一个。例如:【12和24】12的约数有:1、2、3、4、6、12;24的约数有:1、2、3、4、6、8、12、24。它们共有的约数为:1、2、3、4、6、12,则12和24的最大公约数为12…

    2022年5月17日
  • allure command

    allure commandallure-Usage:allure[options][command][commandoptions]Options:–helpPrintcommandlinehelp.-q,–quietSwitchonthequietmode.Default:false-v,–verboseSwitchontheverbosemode.Default:false…

    2022年7月26日
  • H5-BLOB

    H5-BLOB

    2021年6月5日
  • 荣耀20青春版曝光用屏幕指纹,网友:不是侧边指纹更快吗?「建议收藏」

    荣耀20青春版曝光用屏幕指纹,网友:不是侧边指纹更快吗?「建议收藏」荣耀今年的手机,你会有一个共同的特征,那就是侧边指纹设计。之前采用背部指纹由于会破坏整体性,所以采用了侧边的指纹,不管是旗舰(除了去年的Magic2),还是千元机都是这种方案,荣耀官方给出的解释是,侧边指纹的解锁速度更快,而且荣耀这边还对比了相对更慢的三星S10系列的超声波方案,最终的结论是,侧边指纹完全超越了之前的三星解锁,所以让侧边指纹方案落地显得更为铿锵有力。…

    2022年8月10日
  • 安卓开发个人小作品(3) – 多功能音乐播放器[通俗易懂]

    安卓开发个人小作品(3) – 多功能音乐播放器[通俗易懂]这次介绍一个多功能音乐播放器,记得是大二那年寒假写的,实现的主要功能就是音乐播放,带进度条控制,扫描本地音乐,上一曲下一曲,播放类型(单曲循环,顺序播放,随机播放),APP主题换肤,背景图更换等,功能都比较基础,基本上如果你不会的话,跟着我的思路,应该都是能实现的,预计会在以后加入歌词的功能。在开始前,先放一张最后的效果图吧,我个人喜欢的风格,简约,美观。目录1.实现扫描本地音乐…

    2022年6月26日
  • b4什么意思_f0是什么车

    b4什么意思_f0是什么车AndroidEagleEyeAnXposedandadbibasedmodulewhichiscapableofhookingbothJavaandNativemethodstargetingAndroidOS.Relatedinformationofthehookedmethodswillbeloggedastheoutput.Us…

    2022年8月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号