[NA]Lab5:反幂法求矩阵特征根
来源:互联网 发布:软件编程培训机构 编辑:程序博客网 时间:2024/05/21 10:05
任务概述
给定一个n*n矩阵A以及A的某一个特征根的近似值p,从一个给定向量
函数接口定义:
int EigenV(int n, double a[][MAX_SIZE], double *lambda, double v[], double TOL, int MAXN);
其中n为矩阵a的维数,MAX_SIZE是程序定义的矩阵最大维数。lambda传入某一个特征值的近似值p,并且传回该特征值的高度近似值。v传入迭代初始向量
1:如果成功完成求解
-1:如果p就是精确特征值
0:如果算法经过MAXN次迭代后还没有达到精度要求。
裁判程序:
#include <stdio.h>#define MAX_SIZE 10int EigenV(int n, double a[][MAX_SIZE], double *lambda, double v[], double TOL, int MAXN);int main(){ int n, MAXN, m, i, j, k; double a[MAX_SIZE][MAX_SIZE], v[MAX_SIZE]; double lambda, TOL; scanf("%d", &n); for (i=0; i<n; i++) for (j=0; j<n; j++) scanf("%lf", &a[i][j]); scanf("%lf %d", &TOL, &MAXN); scanf("%d", &m); for (i=0; i<m; i++) { scanf("%lf", &lambda); for (j=0; j<n; j++) scanf("%lf", &v[j]); switch (EigenV(n, a, &lambda, v, TOL, MAXN)) { case -1: printf("%12.8f is an eigenvalue.\n", lambda ); break; case 0: printf("Maximum number of iterations exceeded.\n"); break; case 1: printf("%12.8f\n", lambda ); for (k=0; k<n; k++) printf("%12.8f ", v[k]); printf("\n"); break; } } return 0;}/* Your function will be put here */
样例输入1:
31 2 32 3 43 4 50.0000000001 10001-0.6 1 1 1
样例输出1:
-0.62347538 1.00000000 0.17206558 -0.65586885
样例输入2:
20 11 00.0000000001 1021.0 1 1100.0 1 0
样例输出2:
1.00000000 is an eigenvalue.Maximum number of iterations exceeded.
算法思路
求解矩阵特征值的算法有很多,其中最原始的算法叫做幂法(Power Method)。幂法非常简单,用于求解矩阵的最大特征值和对应的特征向量:不妨假设n*n矩阵A的特征值满足条件
实现细节
心得体会
阅读全文
0 0
- [NA]Lab5:反幂法求矩阵特征根
- na
- NA
- NA
- Lab5 bootloader
- ucore lab5
- ucore lab5
- lab5 shellLabNote
- 特征矩阵的矩阵指数
- 矩阵迹的特征
- 提取共生矩阵特征
- 特征值和特征矩阵
- 方根法计算正反矩阵特征向量及最大特征根
- 纹理特征:灰度共生矩阵
- 稀疏特征(稀疏矩阵)
- 共生矩阵纹理特征提取
- NA心得
- Jos-lab5 (上)
- easyUI下拉框控件easyui-combobox使用后台json文件填充数据失败的问题
- socket 网络编程
- 表达式的化简
- Less
- 交叉开发
- [NA]Lab5:反幂法求矩阵特征根
- JZ2440 第13章 LCD控制器(1)
- Vue
- 二维数组的遍历并按标准格式输出
- VMWare与Centos7.0无法共享文件夹的问题总结
- 欢迎使用CSDN-markdown编辑器
- React
- 1024与自己做爱做的事情
- 【常用css3】box-shadow