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

📄 main.cpp

📁 本文的重点在于通过一个实例来解决特殊的条形矩阵特征值得解算.
💻 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 + -