E025

orsci中矩阵特征值和特征向量求解。eig_gen(...)完成一般矩阵的求解;eig_sym(...)完成对称矩阵的求解。

 

#include "stdafx.h"

#include "orsciJWVCL.h"
#include "orsciVM.h"
using namespace orsci;
using namespace orsci::vmt;


int main()
{
cout << " orsci: 特征值与特征向量eig_gen(...)与eig_sym(...) ... http://www.orsci.cn" << endl;
cout << endl;

mdouble X;
//X = "-1, 2, 2; 2, -1, -2; 2, -2, -1";
//X = "2,-1,0,0;-1,2,-1,0;0,-1,2,-1;0,0,-1,2";
//X = "2,1,1;1,2,1;1,1,2;";
X = "1, -3, 3; 3, -5, 3; 6, -6, 4";

cout << "矩阵X= " << endl;
cout << X << endl;
cout << "一般方阵的特征值与特征向量:----------" << endl;
vdouble val_real, val_imag;
mdouble vect_real, vect_imag;
bool mFlag = vmt::eig_gen(X, val_real, val_imag, vect_real, vect_imag);
cout << "eig_gen(...)求解成功标记:" << mFlag << endl;
cout << "特征值的实部:" << endl;
cout << val_real << endl;
cout << "特征值的虚部:" << endl;
cout << val_imag << endl;
cout << "特征向量的实部:" << endl;
cout << vect_real << endl;
cout << "特征向量的虚部:" << endl;
cout << vect_imag << endl;
cout << "=======================================" << endl;

cout << "对称矩阵的特征值与特征向量:----------" << endl;
cout << "模拟一个对称矩阵。这里使用sym = X.T() * X来模拟!" << endl;
mdouble sym = X.T() * X;
cout << "sym = " << endl;
cout << sym << endl;
vdouble eigval;
mdouble eigvect;
mFlag = vmt::eig_sym(sym, eigval, eigvect);
cout << "特征值:" << endl;
cout << eigval << endl;
cout << "特征向量:" << endl;
cout << eigvect << endl;

cout << endl;
cout << "press any key to stop..." << endl;
char pp;
cin >> pp;
return 0;
}

输出

(一)运行结果

orsci: 特征值与特征向量eig_gen(...)与eig_sym(...) ... http://www.orsci.cn

矩阵X=
rowCount = 3 colCount = 3
1 -3 3
3 -5 3
6 -6 4

一般方阵的特征值与特征向量:----------
eig_gen(...)求解成功标记:1
特征值的实部:
4 -2 -2
特征值的虚部:
0 1.10466e-015 -1.10466e-015
特征向量的实部:
rowCount = 3 colCount = 3
-0.408248 0.244001 0.244001
-0.408248 -0.416219 -0.416219
-0.816497 -0.66022 -0.66022

特征向量的虚部:
rowCount = 3 colCount = 3
0 -0.407022 0.407022
0 -0.407022 0.407022
0 0 -0

=======================================
对称矩阵的特征值与特征向量:----------
模拟一个对称矩阵。这里使用sym = X.T() * X来模拟!
sym =
rowCount = 3 colCount = 3
46 -54 36
-54 70 -48
36 -48 34

特征值:
0.43968 4 145.56
特征向量:
rowCount = 3 colCount = 3
-0.24283 -0.801784 0.546055
-0.671563 -0.267261 -0.691068
-0.700027 0.534522 0.473549

press any key to stop...


(二)说明:

(1)矩阵的特征值和特征向量,有着较多应用,eig_gen(...)和eig_sym(...)可以完成特征值和特征向量求解。

(2)关于向量与矩阵,请参看书籍:姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》

(6)orsci包支持向量和矩阵计算,可下载配套软件orsci-art应用。

书籍 姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》
软件 orsci-art开发包(C++语言、Delphi语言和C语言)。