幂法的原理可参考此篇论文:http://d.wanfangdata.com.cn/Periodical/hnnydxxb2001Z1023

本文求解的是 3 阶矩阵最大特征值及其特征向量

下面是其 C++ 实现代码:

#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iomanip>
using namespace std; double A[3][3];
double Y[3]={1,1,1};
double X[3]={0,0,0};
int row=0; int col=0;
double max1=0; void open_file()
{
FILE *fp;
fp = fopen("array.txt", "r"); //3*3矩阵由外部读入
if(fp==NULL)
cout<<"File opened failed!"<<endl; for(row=0;row<3;row++)
{
for(col= 0; col < 3; col ++)
fscanf(fp, "%lf,",&A[row][col]);
if(feof(fp)) break;
}
fclose(fp);
} void mult()
{
X[0]=0;X[1]=0;X[2]=0;
for(row=0;row<3;row++)
{
for(col=0;col<3;col++)
X[row] +=A[row][col]*Y[col];
}
} void to1()
{
long double tmp=fabs(X[0]);
for(int i=1;i<3;i++)
{
if(fabs(X[i])>tmp)
tmp=fabs(X[i]);
}
for(int i=0;i<3;i++)
{
Y[i]=X[i]/tmp;
}
max1=tmp;
} int main()
{
cout <<setiosflags(ios::fixed);
open_file();
double ago=max1+100.0;
double feature_vector[3];
int k=1;
while(fabs(max1-ago)>0.000001)
{
ago=max1;
for(int j=0;j<3;j++)
{
feature_vector[j]=Y[j];
}
mult();
to1();
cout<<"k= "<<k<<" ";
for(int i=0;i<3;i++)
cout<<X[i]<<" ";
cout<<endl;
k++;
}
cout<<endl<<"totally run "<<k-1<<" times"<<endl;
cout<<endl<<"the matrix eigenvalue is "<<max1<<endl;
cout<<endl<<"the feature vector is "<<"["<<feature_vector[0]<<" , "<<feature_vector[1]<<" , "<<feature_vector[2]<<"]"<<endl; }

  部分参数可修改用于扩展

[c++] 幂法求特征向量的更多相关文章

  1. [转]PageRank算法

    原文引自: 原文引自: http://blog.csdn.net/hguisu/article/details/7996185 感谢 1. PageRank算法概述 PageRank,即网页排名,又称 ...

  2. Spark2.0机器学习系列之11: 聚类(幂迭代聚类, power iteration clustering, PIC)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:             (1)K-means             (2)Latent Dirichlet all ...

  3. Machine Learning:PageRank算法

    1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左側排名或佩奇排名.         在谷歌主导互联网搜索之前, 多数搜索引擎採用的排序方法, 是以被搜索词语在 ...

  4. 我对PageRank的理解及R语言实现

    PageRank,网页排名,又称网页级别.Google左侧排名或佩奇排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry ...

  5. 【统计学习】主成分分析PCA(Princple Component Analysis)从原理到实现

    [引言]--PCA降维的作用 面对海量的.多维(可能有成百上千维)的数据,我们应该如何高效去除某些维度间相关的信息,保留对我们"有用"的信息,这是个问题. PCA给出了我们一种解决 ...

  6. KMP算法分析

    KMP是一种复杂度较低的字符串比较算法.基本思路是对欲匹配字符串进行预处理,分析当k位匹配时可以后移的位数,所得的数构成该字符串的特征向量. 求特征向量Next int* Next(string p) ...

  7. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

    1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1 ...

  8. 特征值分解与奇异值分解(SVD)

    1.使用QR分解获取特征值和特征向量 将矩阵A进行QR分解,得到正规正交矩阵Q与上三角形矩阵R.由上可知Ak为相似矩阵,当k增加时,Ak收敛到上三角矩阵,特征值为对角项. 2.奇异值分解(SVD) 其 ...

  9. 初识KMP

    KMP简介 KMP是一种由Knuth(D.E.Knuth).Morris(J.H.Morris)和Pratt(V.R.Pratt)设计的字符串匹配算法.对目标串T[0:n-1]中查找与之匹配的模式串P ...

随机推荐

  1. c语言函数分析

    1.vc6的相关使用 1)常用的快捷键 f7    ->编译 f5    ->运行 f9    ->断点 f10    ->单步执行 f11    ->单步执行,可进入函 ...

  2. sql查询的常用语句

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database 数据库名 3.说明:备份sql server --- 创建 ...

  3. Linux配置tomcat开机自启

    转自百度经验:https://jingyan.baidu.com/article/6525d4b1382f0aac7d2e9421.html 端口也需要保持开机自启详细请看:https://www.c ...

  4. $\LaTeX$数学公式大全12

    $12\ Font\ sizes$ ${\displaystyle \int f^{-1}(x-x_a)\,dx}$ {\displaystyle \int f^{-1}(x-x_a)\,dx} ${ ...

  5. [题解] [CF518D] Ilya and Escalator

    题面 题解 期望dp入门题 设\(f[i][j]\)为到\(i\)时间有\(j\)个人上了电梯的概率, 我们可以得到转移方程 \[ f[i][j]=\begin{cases}f[i-1][j]\cdo ...

  6. 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像分割

    程序环境为高性能集群: CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In ...

  7. 一、基础篇--1.3进程和线程-CountDownLatch、CyclicBarrier 和 Semaphore

    下面对上面说的三个辅助类进行一个总结: 1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同: CountDownLatch一般用于某个线程A等待 ...

  8. js调用后台接口进行下载

    js调用后台接口一定不能用ajax location.href=$$pageContextPath +'downfile/down.do?filname='+row.fileUrl;

  9. 浅谈 Nginx和LVS的各种优缺点

    VS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑. LVS基本能支持所有应用,因为工作在第4层,所以LVS可以对几乎所有应用 ...

  10. 六十五:CSRF攻击与防御之CSRF防御之form表单防御

    防御原理,将csrf_token放到session中,再将session放到cookie中 实现: from flask_wtf import CSRFProtect # flask_wtf 已经提供 ...