雅克比公式求矩阵最大特征值(C语言版)

本文介绍了使用C语言实现雅克比算法来求解实对称矩阵的最大特征值和特征向量。该算法常用于遥感领域的主成分分析,通过平面旋转对矩阵进行相似变换,逐步化为对角阵以获取特征值和特征向量。
摘要由CSDN通过智能技术生成

由于上次发表的自适应滤波器LMS算法涉及到要寻求矩阵最大特征值,因此一直寻思着找个C语言的雅克比算法,下面的代码也是自己试过了,望各位有问题可以提问,谢谢!!!

矩阵的特征值和特征向量是线性代数以及矩阵论中非常重要的一个概念。在遥感领域也是经常用到,比如多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量。
根据普通线性代数中的概念,特征值和特征向量可以用传统的方法求得,但是实际项目中一般都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量。
雅克比方法用于求实对称阵的全部特征值、特征向量。
对于实对称阵 A,必有正交阵 U,使
U TA U = D。
其中 D 是对角阵,其主对角线元 li 是 A 的特征值. 正交阵 U 的第 j 列是 A 的属于 li 的特征向量。
原理:Jacobi 方法用平面旋转对矩阵 A 做相似变换,化A 为对角阵,进而求出特征值与特征向量。

***jacobi.c***

#include "JACOBI.h"

//求实对称矩阵的特征值及特征向量的雅格比法 
//利用雅格比(Jacobi)方法求实对称矩阵的全部特征值及特征向量 
//返回值小于0表示超过迭代jt次仍未达到精度要求 
//返回值大于0表示正常返回 
//a-长度为n*n的数组,存放实对称矩阵,返回时对角线存放n个特征值 
//n-矩阵的阶数 
//v-长度为n*n的数组,返回特征向量(按列存储) 
//eps-控制精度要求 
//jt-整型变量,控制最大迭代次数 

double eejcb(double an[][F_COUNT],int n,double eps,int jt) 
{ 
    static int i,j,p,q,u,w,t,s,l; 
    static double fm,cn,sn,omega,x,y,d; 
    l=1;   //迭代计数器 

    while
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值