📄 main.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 + -