雅可比算法求矩阵特征值C语言源代码,雅可比(Jacobi)计算特征值和特征向量

article/2025/10/15 8:40:55

雅可比迭代法法

在图形图像中不少地方用到求矩阵的特征值和特征向量,好比主成分分析、OBB包围盒等。编程时通常都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量。雅可比迭代法的原理,网上资料不少,详细可见参考资料1。这里咱们简单介绍求解矩阵S特征值和特征向量的步骤:ios

初始化特征向量为对角阵V,即主对角线的元素都是1.其余元素为0。

在S的非主对角线元素中,找到绝对值最大元素 Sij。

用下 式计算tan2θ,求 cosθ、sinθ 及旋转矩阵Gij 。

1d80e58db5e664ac895c46a991f98c18.png

用下面公式求S‘;用当前特征向量矩阵V乘以矩阵Gij获得当前的特征向量V。

170d53d4c48232848b173ca6938b198b.png

若当前迭代前的矩阵A的非主对角线元素中最大值小于给定的阈值e时,中止计算;不然, 令S =S‘, 重复执行(2) ~ (5)。 中止计算时,获得特征值 li≈(S‘) ij ,i,j= 1,2,…,n.以及特征向量V。

这一步可选。根据特征值的大小从大到小的顺序从新排列矩阵的特征值和特征向量。

代码实现

用C++实现,并与参考资料1示例对比。web

#include

#include

#include

#include

using namespace std;

/**

* @brief Jacobi eigenvalue algorithm

* @param matrix n*n array

* @param dimdim represent n

* @param eigenvectorsn*n array

* @param eigenvaluesn*1 array

* @param precision precision requirements

* @param maxmax number of iterations

* @return

*/

bool Jacobi(double* matrix, int dim, doubl


http://chatgpt.dhexx.cn/article/xgGoofOr.shtml

相关文章

PCA | 特征值和特征向量

SVD/PCA的分析只需要一行代码即可实现,但是要理解背后的原理,可能需要从特征值和特征向量开始。第一次接触特征值是在SPM里,那时候连怎么发音都不知道。就像这个slide讲的一样,spm有一个按钮,按了就可以提取&#xff0…

特征值和特征向量的理解

在线性代数的最后,我们都会学矩阵的特征值分解,我们知道一个方阵A经过特征值分解后就得到特征向量和特征值了。那么,这个所谓的特征值和特征向量到底是什么东西呢? 我们一上来就会学到这样的一个公式: Ax λx&#…

MATLAB之特征值和特征向量

1.定义: 设A是n阶矩阵,如果数λ和n维非零向量x使关系式 (1) 成立,那么,这样的数λ称为矩阵A的特征值,非零向量x称为A的对应于特征值λ的特征向量(1)式还可以写为: (2&…

特征值和特征向量的作用

本文转自知乎大牛。 从定义出发,Axcx:A为矩阵,c为特征值,x为特征向量。 矩阵A乘以x表示,对向量x进行一次转换(旋转或拉伸)(是一种线性转换),而该转换的效果为…

线性代数学习之特征值与特征向量

什么是特征值和特征向量: 在上一次线性代数学习之行列式学习了行列式相关的一些概念,其中也多次提到学好行列式是为了学习“特征值和特征向量”的基础,所以此次就正式进入这块内容的学习,也是线性代数中非常重要的概念&#xff0…

线性代数之特征值与特征向量的求法

线性代数之特征值与特征向量的求法 特征值与特征向量 已知如下矩阵A,求解其特征值和特征向量。 首先构造特征方程 det(λE-A) 情况一: 特征值 -2时解方程组(-2E-A)X0,即得: 于是得同解方程组 - 0,解为 - (这里 , 为自由未知…

cfree 上面工具栏消失解决办法(不用重下!!!!!)

在上框空白处鼠标右键自定义; 新建随便命个名; 左上角就是新建的工具栏;然后还是附件打开命令把你想用的快捷方式拖到新建的工具栏就可以了 暂时用着没有啥问题。

cfree编译报错[Error] g++.exe: 5\mingw\lib\: No such file or directory

心血来潮拾起算法想到了c/c,然后安装了cfree,但是在编译程序的时候报错,大致如下 [Error] g.exe: 5\mingw\lib\: No such file or directory [Error] g.exe: 5\mingw\mingw32\lib\: No such file or directory [Error] g.exe: 5\mingw\bin\:…

解决Cfree [Error] g++.exe: 5\mingw\lib\: No such file or directory

昨天笔者复习数据结构想编写代码,突然发现自己的Cfree显示如图所示错误 看到这耀眼的红色,想必是程序员的都不能忍,于是经过苦苦找寻,终于发现了其中的奥妙,那就是把你安装的文件夹名字 C-free 5改为C-free5即不要之间…

Cfree之万能头函数bits\stdc++.h的添加和注意事项

实现步骤 一、创建一个.txt文件,把下面的代码复制进去 // C includes used for precompiling -*- C -*-// Copyright (C) 2003-2015 Free Software Foundation, Inc. // // This file is part of the GNU ISO C Library. This library is free // software; you …

cfree mysql_如何配置CFree才能开发MySql数据库应用

环境: IDE:CFree5.0 操作系统:Windows XP Prefessional sp3 数据库版本:MySQL-5.0.22-community-nt 连接器版本:mysql-connector-c-noinstall-6.0.2-win32 编译器:GCC for windows 4.5.0 2。将Mysql开发包的…

c语言为什么不能自动free,求大神帮忙看看 为什么cfree没有报错但是就是运行不了...

求大神帮忙看看 为什么cfree没有报错但是就是运行不了 #include #include #include #define Insert 1 //增加订单 #define Query 2 //查找订单 #define Update 3 //修改订单 #define Delete 4 //删除订单 #define List 5 //列出所有订单 #define Quit 0 //退出系统 FILE *…

关于CFree5.0中设置支持C99模式

关于C-Free5.0中设置支持C99模式,分为以下几个步骤: 1.打开C-Free5.0,在左上角找到‘构建(B)’ 2.展开‘构建(B)’,点击最下方的‘构建选项’ 3.在‘编译’一栏看到红色框区域&am…

C-Free 5 加 TDM-GCC编辑器搭建C/C++开发环境

本文所需要的安装程序下载地址:https://download.csdn.net/download/fangfang635344731/10705407 1.安装C-Free 5,这一步重点是安装路径绝对不能有空格!!!我的安装路径为“C:\C-Free5”。 2.安装TDM-GCC,…

C语言基础入门:C-Free5设置支持C99标准

问题: 在使用C-Free 5.0调试程序时,编译提示不支持C99模式,错误! 具体问题如下图所示: 解决方法1:对已创建工程的设置,仅对该工程有效。 右键点击“文件列表窗口”中的工程 从上到下&#x…

Cfree-5各种抽风解决办法

最近好像笔记本单步调试用不了,本想去Cfree吧求助,没想到首页就有个和我问题一毛一样的,还有大神在楼下给出了解答,好开森!赶紧记录(chaoxi)到这啦,免得以后抽风。 我这里是最近变成…

cfree5文件标签混乱处理。

有时cfree5并不听话,文件列表标签会乱显示,非常影响心情: 如上面红线内部分,怎么也处理不了。 以前用cfree4安装后再安装5可以处理,但最近处理不了。琢磨了一下,发现原来解决办法很简单: 一、对…

cfree5更新C++11特性

昨天在调试程序的时候,发现有些最新的函数Cfree并不支持,因为最新出来的C11特性不满足。C11标准较之前的版本在性能上有很大改变,具体请查阅百度或谷歌,谷歌现在进不去了,那就翻墙吧。 好了,首先我们还是如…

Cfree5可以JAVA_C语言中free函数的使用详解

free函数是我们再写C语言程序时常用的函数,但是使用时需要注意,一不小心很肯能会引起吐核。 注意:free函数与malloc()函数配对使用,释放malloc函数申请的动态内存。对于free(p)这句语句,如果p 是NULL 指针,…

在Cfree5里使用多行快捷注释的方法

1.打开cfree5,点击上方 工具 选项。 2.点击 工具 选项后,进入“环境选项” 3.进入环境选项后就会发现上方有四个选项,点击“快捷键”这个选项,里面会出现很多操作的快捷键,往下翻就能找到快捷多行注释的选项了 4.此时点…