⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 矩阵特征值计算
💻 CPP
字号:
#include<iostream>
#include<cmath>
#include<fstream>
using namespace std;

const double epi = 1e-6;   //判断误差界的变量 

int N;

double A[100][100];        //输入矩阵 
double v[100];			   //求最大特征值的迭代向量 
double u[100];			   //标准化的迭代向量 


int main(){
	cin>>N;
	for (int i=0;i<N;i++)
		for (int j=0;j<N;j++){
			double a;
			cin>>a;
			A[i][j] = a;
		}
	
	//任意设定起始迭代向量 
	for (int i=0;i<N;i++){
		u[i] = 1.0;
	}

	//根据起始向量设定最大特征值初值 
	double l1 = 1.0;
	double l0;

	while (1){
		l0 = l1;
		l1 = 0.0;
		
		//向量迭代的过程 
		for (int i=0;i<N;i++){
			v[i] = 0.0;
			for (int j=0;j<N;j++)
				v[i] += A[i][j] * u[j];
			if (abs(v[i])-l1 > epi) l1 = v[i];
		}
		
		//向量标准化 
		for (int i=0;i<N;i++){
			u[i] = v[i] / l1;
		}
		
		//停止迭代的误差可接受界限 
		if (abs(l0-l1)<epi) break;
	}
	
	cout<<"lamda = "<<l1<<endl;
	cout<<"X = ";
	for (int i=0;i<N;i++)
		cout<<u[i]<<" ";
	cout<<endl;
	
	system("pause");
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -