📄 main.cpp
字号:
#include <iostream.h>
#include <stdio.h>
#include "Matrix.h"
#include "Max&Min.h"
void main()
{
int i,j;
int s = 2;
int r = 2;
double MatrixA[M][N];
double b = 0.16;
double c = -0.064;
double Max;
double Min;
double AbsMin;
double AbsMax;
double Cond;
double det;
double V;
InitMatrix(MatrixA, b, c);//创建矩阵。
cout.precision(12); //12位有效数字。
// cout<<Det(MatrixA)<<endl;;
//求出矩阵A的最大和最小的特征值
MaMiEigenval(MatrixA,Max,Min);
//求出矩阵A的绝对值最小的特征值
AbsMinEigenval(MatrixA,AbsMin);
//求出矩阵A的绝对值最大的特征值
AbsMaxEigenval(MatrixA,AbsMax);
//求谱范数条件数cond(A),等于绝对值最大与绝对值最小的特征值的商的绝对值
Cond = fabs(AbsMax/AbsMin);
//求矩阵的行列式。
det = Det(MatrixA);
cout<<"1、求特征值Eigenval_1, Eigenval_501和Eigenval。"<<endl;
printf("最小特征根Eigenval_1=%12.11e\n", Min);
printf("最大特征根Eigenval_501=%12.11e\n", Max);
printf("绝对值最小特征根Eigenval_s=%12.11e\n", AbsMin);
cout<<"2、求矩阵A数V_k最接近的特征值。"<<endl;
//求与V[k]距离最近的特征值。
for (i=1;i<=39;i++)
{
V = Min + i *( Max - Min) / 40;
for (j=0;j<N;j++)
{
MatrixA[s][j] = MatrixA[s][j] - V;
}
AbsMinEigenval(MatrixA,AbsMin);
for (j=0;j<N;j++)
{
MatrixA[s][j] = MatrixA[s][j] + V;
}
AbsMin = AbsMin + V;
printf(" V_%d=%12.11e, Eigenval_i%d=%12.11e\n", i, V, i, AbsMin);
}
cout<<"3、求A的条件数cond2和行列式det:"<<endl;
printf("条件数cond=%12.11e\n", Cond);
printf("行列式det=%12.11e\n", det);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -